Heim >Web-Frontend >CSS-Tutorial >Erweiterte CSS-Tipps
Verwenden Sie: not(), um den Rahmen im Menü hinzuzufügen/aufzuheben
Viele Leute fügen der Navigation wie folgt einen Rahmen hinzu und heben ihn dann für den letzten auf:
/* add border */ .nav li { border-right: 1px solid #666; } /* remove border */ .nav li:last-child { border-right: none; }
Verwenden Sie tatsächlich CSS3. :not() kann auf den folgenden Code vereinfacht werden:
.nav li:not(:last-child) { border-right: 1px solid #666; }
Natürlich können Sie auch .nav li li oder sogar .nav li:first-child verwenden ~ li, aber die Verwendung von :not() macht die Absicht klarer
Alle gängigen Browser unterstützen den :not-Selektor, außer IE8 und früheren Versionen
Fügen Sie dem Text das Attribut „line-height“ hinzu
Sie müssen die Zeilenhöhenattribute e388a4556c0f65e1904146cc1a846bee bzw. 559b785d768baf49c9620501eda57184 nicht festlegen. Fügen Sie sie im Gegenteil einfach zum Textkörper hinzu:
body { line-height: 1; }
Hier Auf diese Weise kann das Textelement dieses Attribut problemlos vom Textkörper erben
Vertikale Zentrierung
Sie können jedes Element vertikal zentrieren:
html, body { height: 100%; margin: 0; } body { -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-flex; display: flex; }
Hinweis: Flexbox weist einige Fehler auf IE11
Verwenden Sie Kommas, um Listen zu trennen
Lassen Sie die Liste so aussehen, als wäre sie durch Kommas getrennt:
ul > li:not(:last-child)::after { content: ","; }
Entfernen Sie das Komma nach dem letzten Element über :not() Pseudoklasse
Verwenden Sie ein negatives n-tes Kind. Wählen Sie Elemente aus
Verwenden Sie ein negatives n-tes Kind, um Elemente zwischen 1 und n auszuwählen:
li { display: none; } /* 选择第1到3个元素并显示它们 */ li:nth-child(-n+3) { display: block; }
Natürlich, wenn Sie Verstehen Sie :not(), Sie können auch Folgendes tun:
li:not(:nth-child(-n+3)) { display: none; }
SVG als Symbolsymbol verwenden
Es gibt keinen Grund, SVG nicht als Symbolsymbol zu verwenden:
.logo { background: url("logo.svg"); }
SVG hat einen guten Skalierungseffekt für jede Auflösung und unterstützt IE9 in allen Browsern, also verzichten Sie auf die Verwendung von PNG-, JPG- und GIF-Dateien
Hinweis: Der folgende Code kann die Barrierefreiheit für Benutzer verbessern, die Hilfsmittel zum Surfen im Internet verwenden:
.no-svg .icon-only:after { content: attr(aria-label); }
Anzeigetext optimieren
Manchmal werden Schriftarten nicht auf allen Geräten optimal angezeigt. Lassen Sie sich daher vom Gerätebrowser helfen:
html { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
Hinweis: Bitte Gehen Sie „optimizeLegibility“ verantwortungsbewusst ein. Darüber hinaus unterstützt IE/Edge kein Text-Rendering
Verwenden Sie die maximale Höhe, um eine reine CSS-Diashow zu implementieren.
Verwenden Sie die maximale Höhe mit Beyond-Hidding, um eine reine CSS-Diashow zu implementieren:
.slider ul { max-height: 0; overlow: hidden; } .slider:hover ul { max-height: 1000px; transition: .3s ease; /* animate to max-height */ }
继承box-sizing
让box-sizing继承自html:
html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; }
这使得在插件或者其他组件中修改box-sizing属性变得更加容易
设置表格相同宽度
.calendar { table-layout: fixed; }
使用Flexbox来避免Margin Hacks
在做多列布局的时候,可以通过Flexbox的space-between属性来避免nth-、first-、 last-child等hacks:
.list { display: flex; justify-content: space-between; } .list .person { flex-basis: 23%; }
这样,列之间的空白就会被均匀的填满
对空链接使用属性选择器
当3499910bf9dac5ae3c52d5ede7383485中没有文本而href不为空的时候,显示其链接:
a[href^="http"]:empty::before { content: attr(href); }
文本溢出省略的处理方法
单行文本溢出
.inline{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
多行文本溢出
.foo{ display: -webkit-box!important; overflow: hidden; text-overflow: ellipsis; word-break: break-all; -webkit-box-orient: vertical;/*方向*/ -webkit-line-clamp:4;/*显示多少行文本*/ }