A good, simple and free, website is ImageMap Generator, but you have to save your code after defining 3 or 4 map areas, otherwise the code will result wrong.
svg with external image embedded
All browsers have this limitation: they not allow to show an svg with an external image embedded, such as
<image x="2" y="2" width="somewidth" height="someheight" xlink:href="myimage.jpg">
even though the image is in local.
For security reasons.
expansible image with image-map
We managed to add an image map to the on-click expansible image.
This is the code:
<style type="text/css">
img[usemap] { zoom: 12%;}
img[usemap]:focus {zoom: 50%;}
</style>
<map name="mymap">
<area shape="rect" coords="1294,253,1420,434" title="mount" />
<area shape="rect" coords="1709,296,1835,477" title="tree" />
</map>
<img tabindex="0" src="path-to/myimage" usemap="#mymap" />
The problem is that to close the expansed image you must click either on a map area or outside the image.
on-click expansible image
We were looking for the simplest possible solution to enlarge an image on click, without javascript and with the least amount of code possible.
a first attempt
At first we found the pseudo-class focus as a solution: with this css code img:focus and in html (inside the img tag) tabindex="0".
In this way, the image expanded on click, but to make it return to the initial size, it was necessary to click outside the enlarged image. As in the following example:
an important step
Therefore we had to add other code, so that we could return to the original, small, size, clicking inside the image. We had to use the input tag.
This is the result:
This is the code:
<style type="text/css">
input:checked + label > img {max-width: 200px; transform:scale(1.0); left: 0px;}
input {display: none;}
img {
max-width: 200px;
transition: all 1s;
transition:transform 0.25s ease;
}
img:focus {
max-width: none;
transform:scale(2.8);
position: relative;
left: 5%;
outline:0;
}
</style>
<p>This the result:</p>
<input type="checkbox" checked id="myimage" />
<label for="myimage">
<img tabindex="0" src="path-to-my-image/myimage.jpg" width="200px" />
</label>
fine tuning: adding an image map
We speak about this new feature in another article.
android mail app
K9-Mail is a good app, but unfortunately rarely updated, in the last year. Besides, it has had an annoying cryptography bug and a notification bug.
So we tried FairEmail, that is definitely more accessorized, but not really privacy-friendly as they pretend, and not so open source: impossible to contact the developer, and pro functionalities are blocked until you pay something.
So, we went back to K9-Mail, that is absolutely open-source, even more “spartan”, but in its latest release without cryptography bug and notification bug.
libreoffice 7 and autokey
To avoid a deal of errors with autokey (QT) in LibreOffice 7 (and KDE 5.20) it could be necessary install the KDE Frameworks 5 integration.
Here, at least, it worked.
split an epub per chapters
An epub book has multiple chapters. What method to split it into multiple files, each of them consist one chapter, effectively?
For example as the following:
1) Find: <h2
2) Replace: <hr class="sigil_split_marker" /><h2
3) Then select Edit > Split at markers.
disk full in linux
It may happen that your partition is almost full. So you can try to see where are too big files.
cache and logs
One reason could be cache files or log ones, in particular in /var.
You can delete useless (f.e. old) cache files and empty log files, these last with this command:
cat /dev/null > filename.log
old kernels
see this post.
min-height and width with flex
The child element of a flexbox may not obey to the css property min-height. Therefore you should use this code in the parent element: min-height: 100vh.
Otherwise the child element, f.e. the main div of a web page with few content, could end before the end of the page, in an inelegant way.
The width of a child element as well may not work as expected (and as it would do without flex). Therefore you should explicitly state the width of a child element within a flexbox.
Otherwise a web page (with few text, i.g.) could have a width considerably narrower that expected.
automatically alternate a div in a web page
It is quite easy automatically alternate a (image) banner in a webpage with javascript. But if you want alternate automatically a complex text it is not so easy.
First of all you have to know that is not possible use php, because the “duty” of php ends with the “production” of a page, and it is not usable to change something in a page alrealdy “made”.
Therefore, the only way is javascript. I found a js to change automatically images (every x time) and I modified it according to my needs.
il javascript
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } slideIndex++; if (slideIndex > slides.length) {slideIndex = 1}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
// slides[slideIndex-1].style.display = "block";
// slides[slideIndex-1].className = slides[i].className.replace(" visible", "");
slides[slideIndex-1].style.display = "flex";
dots[slideIndex-1].className += " active";
setTimeout(showSlides, 4000); // Change image every 4 seconds
}
l’html
Afterward I was able to use, within the html proposed a php code, as in the following
$ads_verticale_dx="<code><p class=\"mySlides fade\"><span class=\"numbertext\">1 / 3</span><img src=\"someimage.jpg\" width=\"100px\" /><br />some <b>text</b> with<br /> <a rel=\"external\" href=\"somelink/\">some link</a></p>
<p class=\"mySlides fade\"><span class=\"numbertext\">2 / 3</span><img src=\"someotherimage.jpg\" width=\"100px\" /><br />some other <b>text</b> with a<br />
<a rel=\"external\" href=\"somelink/\">some other link</a></p>
<div style=\"text-align:center\"><span class=\"dot\"></span><span class=\"dot\"></span><span class=\"dot\"></span></div>
il css
And this is the css to add
.mySlides {display: none;
}
/* Slideshow container */
.slideshow-container { vertical-align: middle;
}
/* Caption text */
.text {
display: none;
color: #f2f2f2;
font-size: 15px;
padding: 8px 12px;
width: 100%;
text-align: center;
}
/* Number text (1/3 etc) */
.numbertext {
visibility: hidden;
color: #f2f2f2;
font-size: 12px;
padding: 8px 12px;
top: 0;
}
/* The dots/bullets/indicators */
.dot {
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: none;
transition: background-color 0.6s ease;
}
.active {
background-color: #717171;
}
/* Fading animation */
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1.5s;
animation-name: fade;
animation-duration: 1.5s;
}
@-webkit-keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
@keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
.text {font-size: 11px}
}
Last problem: how load the javascript. You can put it within the body, and this way it works without proiblems, but is a quite ugly solution. The best way is tu put the script within the head, or in a linked js file with all the other scripts, and then do (wihin the body tag) the command onLoad=”showSlides();”. But doing so, some browser, such as Chrome, could not understand the command. To fix this issue, be sure to use the correct case (onLoad, not onload) and try to delete the browser cache. This way you should force Chrome to recognize the script.
It works!