Beiträge von Sempervivum
-
-
-
-
Zitat
Komischerweise funktioniert das mit diesem Code problemlos. Ich verstehe aber nicht warum.
Das habe ich auch zunächst nicht verstanden, denn das Display deines Samsung-Handys hat eine Breite von über 1000px und dürfte mit dieser Mediaquery eigentlich nicht auf column-Layout umschalten. Ich habe jedoch weiter recherchiert und mit meinem Samsung S4 getestet und dies gefunden:
https://webplatform.github.io/docs/tutorials…ding-css-units/
Sie schreiben dort:
ZitatThe CSS pixel is a ‘reference’ pixel, not a device pixel. This is misleading and, personally, I prefer the notion of ‘user unit’ that SVG uses because I think it is easier to then explain the mapping to physical units and device pixels. But once one understands that a ‘px’ is actually a reference, not a device pixel, things make more sense. The thing to remember is that a CSS px is an abstract unit and there is a ratio controlling how it a) maps to actual device pixels and b) maps to physical units (in a fixed way, the ratio is always 96 CSS px to an inch).
D. h. die Pixel von CSS haben nichts mit den Pixeln des Displays zu tun. Offenbar ergibt sich die Breite in CSS-Pixeln durch die Breite des Displays in physikalischen Pixeln dividiert durch devicePixelRatio. Und das heißt weiter, dass die Berechnung, die ich in #22 erwähnt habe, automatisch durch den Browser stattfindet, man braucht sich darum nicht zu kümmern.
Bei meinem S4 wird eine devicePixelRatio von 3 angezeigt und eine CSS-Breite des window von 360px (im Hochformat).
-
Ich habe mich noch ein wenig umgesehen mit dem Ergebnis, dass die Browserunterstützung für die Pixelratio in Javascript sehr gut ist, sogar der IE11 ist dabei:
https://developer.mozilla.org/en-US/docs/Web…evicePixelRatio
Dividiert man die Pixelbreite durch die Pixelratio müsste man eine effektive Breite bekommen, die ein gutes Kriterium für die Umschaltung des Layouts ist.
-
Nein, leider nicht. Das mit den hochauflösenden Displays ist eine Sache, in die ich mich selber noch nicht so eingearbeitet habe. Eine richtige Wissenschaft für sich, auch wenn es darum geht, Bilder verschiedener Auflösung einzubinden. Man sieht ja, dass die Pixelbreite u. U. kein geeignetes Kriterium mehr ist, um zwischen Desktop und Handy zu unterscheiden. Es gibt da eine Pixeldichte, auf die man auch in CSS Zugriff hat, aber alles noch nicht richtig ausgereift mit teilweise proprietärer Syntax.
-
PS: Recherche nach der Auflösung des A7 liefert:
Zitat6 Zoll großes Display mit einer Auflösung von 1.080 x 2.220 Pixeln
-
Sieht gut aus und funktioniert bei mir ebenfalls, wenn ich es per Copy&Paste in meine Testdatei übertrage.
Versuche, auf dem PC das Browserfenster stark zu verkleinern in der Breite, ob er dann auf die vertikale Anordnung umschaltet. 500px kommen mir relativ gering vor, weil viele Handys ein hohe Auflösung haben.
-
Poste doch mal die vollständige Mediaquery.
-
Ja, das habe ich getestet und bei mir funktioniert es. In deinem Posting hast Du es falsch geschrieben
flex-direction: colum;
statt
flex-direction: column;
aber wahrscheinlich ist das nur ein Übertragungsfehler?
-
Auf den Bildern kann ich leider gar nichts erkennen, da sind bei mir nur Schleier und Schatten.
ZitatKomischerweise funktioniert es, wenn ich anstatt 1200PX einfach 62% verwende. Ich weiß aber nicht ob das richtig istRichtig oder falsch ist hier weniger die Frage, sondern ob Du damit zu einer Darstellung kommst, die auf allen Monitoren gut aussieht. Wenn ich das mit den 62% ausprobiere, habe ich das Problem, dass bei schmalem Browserfenster, auch wenn die Mediaquery greift, links und rechts Platz verschenkt wird. Eine einfache Möglichkeit, beiden, schmalen und ganz breiten Browserfenstern gerecht zu werden, ist, max-width statt width zu verwenden. Dann ufert die Breite auf der einen Seite nicht aus und auf der anderen Seite wird bei schmalerem Browserfenster der verfügbare Platz ausgenutzt.
-
Gern.
Deaktiviert man die feste Breite für #homepage, so verschwindet die horizontale Scrollbar und man kann die Seite auf einen Blick erfassen.
Code
Alles anzeigen#homepage { margin: 0 auto; margin-top: 35px; /* width: 1200px; */ display: flex; flex-direction: column; border: 5px solid #000; border-radius: 5px; box-shadow: 0 0 10px #000; background-image: url(images/background.jpg); background-repeat: repeat; }
Und die vertikale Anordnung erreichst Du mit diesem CSS:
Damit die Sidebar auch dann sichtbar ist, musste ich ihr eine min-height verpassen. Wenn erst Mal Inhalte drin sind, kann das entfallen.
Was die HG-Grafiken betrifft, so müsste man wissen, wie Du dir die Anzeige vorstellst. Es gibt da ja diverse Varianten, gekachelt oder nicht gekachelt etc. Kannst Du sie vielleicht an dein nächstes Posting anhängen?
-
Zitat
Ich möchte, dass sich alle Container auf dem Handy untereinander anordnen. Verwende ich dann flex-direction innerhalb der Media-Queries ?
Dann war meine Vermutung ja richtig und die Verwendung von flex-direction:column in der Mediaquery wäre der beste Weg.
ZitatDas Design verwendet Grafiken, welche eine feste Breite haben. Das Layout soll auf dem PC 1200PX breit sein und sich auf einem Mobilgerät entsprechend adaptieren. Vor Allem sind ja alle Werte relativ beziehen sich also auf etwas.
Nicht jeder hat seinen Browser im Vollbild laufen, ich auch nicht und ich muss horizontal scrollen, um den Bereich rechts sehen zu können. Responsives Layout verstehe ich so, dass sich das Layout an die Breite des Browserfensters anpasst. Das schließt die Verwendung von Hintergrund-Grafiken nicht aus, es gibt CSS-Anweisungen um die Größe an den umgebenden Container anzupassen.
-
Da kann man ja vor lauter schwarz kaum etwas erkennen
Ein Kernproblem ist, dass Du dem Container #homepage eine feste Breite gegeben hast. Damit hebelst Du das Flexlayout insofern aus, als zwar die Verteilung der Breite von 3:1 passt, aber das Layout passt sich nicht an das Browserfenster an und man muss scrollen.
BTW: Das Body-Element ist nicht tabu für Styling, man kann diesem ebenfalls ein display:flex geben und hat dann einen Container weniger.
Was die Mediaquery betrifft, so ist mir nicht ganz klar, was Du damit erreichen willst. Naheliegend wäre ein vertikale Anordnung auf einem schmalen Bildschirm. Wolltest Du da vielleicht 100% statt 100px schreiben?
Eine vertikale Anordnung kannst Du leichter erzielen, wenn Du das Layout auf flex-direction:column umschaltest.
Edit: Ich sehe gerade, dass der schwarze Hintergrund dadurch kommt, dass ich die Hintergrundbilder nicht habe.
-
Dann poste am besten auch das HTML zu dem CSS.
-
Dann probiere mal dieses:
https://webentwicklung.ulrichbangert.de/hover.html
Ich habe zusätzlich das Bild etwas nach links oben verschoben, weil es sonst vom Finger bedeckt ist.
HTML
Alles anzeigen<!DOCTYPE html> <html lang="de"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta charset="UTF-8"> <title>Testseite</title> <style> html, body, div { width: 100%; height: 100%; } #bcpo .bcpo-images { display: flex; justify-content: center; align-items: center; } #bcpo .bcpo-images div.bcpo-image-parent { width: 100px; height: 100px; transition: 0.5s; } img { width: 100%; height: 100%; } #bcpo .bcpo-colors div.bcpo-color-parent:hover, #bcpo .bcpo-colors div.bcpo-color-parent.magnify, #bcpo .bcpo-images div.bcpo-image-parent:hover, #bcpo .bcpo-images div.bcpo-image-parent.magnify { transform: scale(2); z-index: 1; } #bcpo .bcpo-colors div.bcpo-color-parent.magnify, #bcpo .bcpo-images div.bcpo-image-parent.magnify { transform: scale(2) translate(-50px, -50px); z-index: 1; } </style> </head> <body> <div id="bcpo"> <div class="bcpo-images"> <div class="bcpo-image-parent"> <img src="images/Stoff-transparent.png"> </div> </div> </div> <script> var conts = document.querySelectorAll('#bcpo .bcpo-images div.bcpo-image-parent'); for (var i = 0; i < conts.length; i++) { conts[i].addEventListener('touchstart', function (event) { event.preventDefault(); this.classList.add('magnify'); }); } document.querySelector('body').addEventListener('touchend', function () { document.querySelector('div.bcpo-image-parent.magnify').classList.remove('magnify'); }); </script> </body> </html>
-
Und welche Variante hast Du jetzt genommen, die mit einer weiteren Zeile oder die mit Flex?
-
Wenn Du das Bild nicht als Hintergrund sondern als normales img-Tag einbindest und absolut positioniert unter die Slideshow legst, kannst Du u. a. Helligkeit und Kontrast mit CSS steuern:
-
PS: Ich sehe gerade, dass es das auch beim Gridlayout gibt: align-self
https://css-tricks.com/snippets/css/complete-guide-grid/
Allerdings scheint dieses nur anwendbar zu sein, wenn es nur ein Item in der Zelle gibt.
Eine andere Möglichkeit könnte sein, eine weitere Zeile anzulegen mit den Knöpfen:
HTML
Alles anzeigen<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Test Gridlayout</title> <style> .container { display: grid; grid-template-columns: 33.33% 33.3% 33.3%; grid-template-rows: 1fr auto; } </style> </head> <body> <div class="container"> <div id="e1">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div> <div id="e2">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</div> <div id="e3">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div> <button>Button 1</button> <button>Button 2</button> <button>Button 3</button> </div> </body> </html>
Mit Flex geht es aber auf jeden Fall.
-
Ja, das geht sehr gut mit Flexlayout, etwa so: