Heim >Web-Frontend >CSS-Tutorial >Erweiterte CSS-Tipps

Erweiterte CSS-Tipps

高洛峰
高洛峰Original
2016-11-22 10:00:531572Durchsuche

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;/*显示多少行文本*/
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Zusammenfassung der CSS-SyntaxNächster Artikel:Zusammenfassung der CSS-Syntax