Since I'm getting older I often need to pinch zoom into web pages to make the text more readable.
However, Android (or Chrome) has the annoying "feature" to enlarge the whole viewport when zooming into a web page, forcing the user to scroll horizontally through the page to read the text:
Currently it seems that there is no way to disable this behaviour from the developer's side using CSS or HTML. Although Chrome as a so-called reading mode I see this only as a workaround, since the user must know about this mode and must enable it manually for each single website – and does not work on all pages.
So I experimented a bit and found a JavaScript-based solution that is pretty simple. You need some sort of container for that you want to re-flow the text on pinch zoom (in this example the HTML element main), and it should have no margins when in mobile view. I also suggest to add overflow-wrap: break-word; to your CSS, since otherwise long URLs might break the layout.
Then insert the following JavaScript code at the end of your HTML file:
<script>// Force Android's browsers to reflow content on pinch zoomif(navigator.userAgent.match(/android/i)&& window.visualViewport && window.visualViewport.scale){let scaleTimeoutId =undefined
window.visualViewport.addEventListener("resize",(()=>{if(scaleTimeoutId !=undefined){
window.clearTimeout(scaleTimeoutId)}// Apply changes if the value has not changed for more than 250ms to prevent flickering
scaleTimeoutId = window.setTimeout(()=>{
scaleTimeoutId =undefinedvar scaleFactor = window.visualViewport.scale
var main = document.getElementsByTagName('main')[0]if(scaleFactor >1){
main.style.maxWidth =""+ Math.round(100/scaleFactor)+"%"// Add a CSS class that allows to do modifications on default styles,// like removing 'margin: auto'.
main.classList.add('pinchzoom')}else{
main.style.maxWidth =''
main.classList.remove('pinchzoom')}},250)}))}</script>
This uses the VisualViewport's scale property to set the maximum width of the container element to the scale factor's inverse value and thus force the browser to wrap the text along the actual viewport's size:
An issue of this method is that since the text gets rearranged it might flow out of the visual viewport. I've tried to workaround this problem by identifying the centered element of the visual viewport and scroll this into view after the 'max-width' style had been applied, but due to limitations on scrollIntoView() this is far from being perfect. See /js/reflow.js for the current full version if this code.
I don't know if this works on all Browsers, and if it does not have any other side effects, so I would be happy to get some feedback!
Nach dem vorherigen Update zu meinem Blog und WhatsApp möchte ich nun auch noch ein persönliches Update hinterher schieben. In den letzten zwei Jahren hat sich auch für mich persönlich einiges verändert. Nachdem ich Anfang 2020 – noch vor Corona, zumindest in Deutschland – durch berufliche Überlastung einen Burnout erlitten habe, habe ich einige Dinge in meinem Leben geändert, wenn auch nicht direkt.
Anfang 2020 hörte man die ersten Erzählungen von dieser neuen Lungeninfektion aus China. Und als mich das Virus dann direkt im März – noch vor dem ersten Lockdown – erwischte, da spürte ich sofort, dass dies keine normale Erkältung und auch keine Grippe war, es fühlte sich einfach komplett anders an. Klarheit gab es erst nach mehreren Wochen, nachdem ein Kollege aus der Abteilung im Krankenhaus ins künstliche Koma gelegt werden musste und das Gesundheitsamt dann doch mal die Möglichkeit in Erwägung zog, dass das, was zuvor die ganze IT-Abteilung flach gelegt hat, möglicherweise doch keine Grippe gewesen ist und uns endlich Zugang zu einem PCR-Test gegeben hat.
Glücklicherweise haben wir es alle, sowohl die Kollegen als auch meine Familie, mehr oder weniger unbeschadet überstanden. Mein allergisches Asthma und einige Lebensmittelallergien sind allerdings seit dieser Zeit praktisch komplett verschwunden. Ob dies an der Hyposensibilisierung gegen Hausstaub lag, die ich zuvor drei Jahre lang durchgezogen habe, an der neuen Asthma-Medikamentation, oder vielleicht eine Nebenwirkung der Corona-Infektion war, kann ich bis heute nicht mit Sicherheit sagen.
Die nächsten zwei Jahre waren dann wie bei uns allen durch Corona und Lockdown geprägt. Ich habe an Demos gegen Querdenker teilgenommen und für unser lokales Kino eine datenschutzfreundliche Kontakterfassung programmiert, und jede Impfung mitgenommen, die ich kriegen konnte. Trotzdem hat mich das Virus noch zwei weitere Male erwischt, zum Glück auch diese Male ohne langfristige Folgen.
Im Jahr 2022 hat die Hündin einer Freundin Welpen bekommen, und seit dem ist unsere Familie zu fünft. Die Pudel-Mops-Mischlingsdame ist ein fester Teil von uns geworden.
Im darauffolgenden Jahr habe ich es dank der Motivation durch meine Frau geschafft, 15kg abzunehmen und dies auch zu halten. Damit habe ich fast mein "Jugendgewicht" wieder erreicht, was sich so positiv auf meinen Blutdruck ausgewirkt hat, dass ich seit dem auf Tabletten verzichten kann. Ich habe mit dem Laufen begonnen und kann inzwischen Strecken in einer Geschwindkeit laufen, die früher für mich als Sportmuffel völlig utopisch waren. Seit einigen Monaten kann ich sogar einen Fitnessstudio-Ausweis mein Eigen nennen, und das ist definitiv keine Fördermitgliedschaft ;-)
Im letzten Jahr habe ich mit meinem Arbeitgeber eine Vereinbarung über eine 4-Tage-Woche getroffen (aus organisatorischen Gründen 4,25 Tage, aber "close enough"). Dieser zusätzliche freie Tag hat mir dabei geholfen, mein Stresslevel stark abzubauen, weil ich viele private Aufgaben auf freitags legen kann und sie nicht nach einem anstrengenden Arbeitstag noch irgendwie erledigen muss. Zudem verzichte ich seit dem auf Fleisch, wenn es eine Alternative gibt. Bis zum Veganismus ist es noch ein weiter Weg, aber es fühlt sich gut an und ich werde immer konsequenter. Als Nächstes habe ich mir den Alkohol als meinen Gegner vorgenommen, und das klappt bisher auch schon sehr gut. Für den gelegentlichen Rausch gibt es ja inzwischen auch andere legale Möglichkeiten, die deutlich weniger gesundheitsschädlich sind ;-)
Dieses Blog hatte einen ziemlich langen Winterschlaf, was neben meiner beruflichen und privaten Belastung auch damit zusammen hing, dass es seit dem Umzug vom Uni-Blogserver auf meine eigene Domain mit einem Drupal 7 betrieben wurde und ich mangels Migrationpfad lange keine Lust auf ein Update hatte ("Die Schuster tragen die schlechtesten Schuhe").
Seit einigen Wochen ist das Thema aber nun vom Tisch, das Blog ist auf den Static Site-Generator 11ty umgestellt. Leider sind die Kommentare dadurch verloren gegangen, aber irgendetwas ist ja immer :-)
Nun aber zum Thema dieses Blogeintrages:
Ich hab mich WhatsApp lange aus Datenschutzgründen verweigert und es nur in Verbindung mit einer anonymen Festnetznummer genutzt. Irgendwann habe ich das dann aus "gesellschaftlichem Druck" aufgegeben, da ich ja eh einen Facebook-Account hatte und beides zum selben Unternehmen gehört.
Meinen Facebook-Account habe ich immer Sommer 2024 gelöscht, nachdem ich mich dort schon Monate lang nicht mehr angemeldet habe. Meine Social-Media-Heimat ist seit dem Ende von Twitter Mastodon geworden.
Ich bin weiterhin per Threema, Signal, Matrix, E-Mail und SMS/Telefon erreichbar, wer mich kontaktieren will, der wird auch ohne WhatsApp einen Weg finden :-)
Lego Boost ist quasi ein "kleines Mindstorms", mit dem die Kinder ihre eigenen Maschinen bauen und programmieren können.
Doch leider hat Lego die Berechtigungsanfrage und das Firmware-Update in Boost-App für Android Version 1.9.7 offenbar versemmelt, aber ich habe eine zumindest für mich funktionierende Lösung gefunden.
In die Android-Einstellungen auf "Apps" wechseln, dort die Lego Boost-App suchen und auf Berechtigungen klicken. Dann auf "Standort" und dort die Option "Immer" auswählen, die vom regulären Pop-up-Dialog nicht angeboten, aber offenbar von der App abgefragt wird.
Nun kommt man schon einen Schritt weiter, aber die App wollte sich immer noch nicht mit dem Hub verbinden - offenbar, weil dort erst ein Firmware-Update eingespielt werden musste, was die App jedoch aus irgendeinem Grund nicht tun will.
Die Lösung für dieses Problem ist die App Lego PoweredUp aus dem PlayStore. Nach dem Start klickt man dort auf "Erschaffen", gibt dem Projekt einen beliebigen Namen, klickt dann auf das Bluetooth-Symbol und folgt den Anweisungen. Nun sollte das Firmware-Update eingespielt werden, was durch ein rot-grünes Blinken am Hub angezeigt wird.
Danach funktionierte das Hub dann auch endlich in der Boost-App, aber @Lego, mal ganz ehrlich: die Version 1.9.7 ist ein halbes Jahr alt. Was machen Kinder, deren Eltern keine Vollnerds sind, um sich so tief ins System zu frickeln? Für die dürfte das ein sehr frustrierendes Weihnachtsgeschenk gewesen sein.