ホームページ > 記事 > ウェブフロントエンド > 高度な CSS のヒント
:not() を使用して、メニューの境界線を追加/キャンセルします
多くの人は、次のようにナビゲーションに境界線を追加し、最後の境界線をキャンセルします:
/* add border */ .nav li { border-right: 1px solid #666; } /* remove border */ .nav li:last-child { border-right: none; }
実際には、CSS3 の :not() を使用します。次のコードに簡略化できます:
.nav li:not(:last-child) { border-right: 1px solid #666; }
もちろん、 .nav li + li や .nav li:first-child ~ li も使用できますが、 :not() を使用すると意図がより明確になります
すべての主要なコードブラウザーは、IE8 以前のバージョンを除き、:not セレクターをサポートします
本文に行の高さ属性を追加します
行の高さ属性を e388a4556c0f65e1904146cc1a846bee と 559b785d768baf49c9620501eda57184 に個別に追加する必要はありません。逆に、必要なのは本文に追加するだけです:
body { line-height: 1; }
このようにして、テキスト要素は本文からこの属性を簡単に継承できます
垂直方向の中央揃え
任意の要素を垂直方向の中央に配置できます:
html, body { height: 100%; margin: 0; } body { -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-flex; display: flex; }
注: フレックスボックスにはIE11 でのいくつかのバグ
リストを区切るにはカンマを使用してください
リストはカンマで区切られているように見えます:
ul > li:not(:last-child)::after { content: ","; }
:not() 疑似クラスを介して最後の要素の後のカンマを削除します
負の nth-child を使用します要素を選択するには
1 と n の間の負の nth-child を使用します。 間の要素を選択します:
li { display: none; } /* 选择第1到3个元素并显示它们 */ li:nth-child(-n+3) { display: block; }
もちろん、:not() を理解していれば、次のこともできます:
li:not(:nth-child(-n+3)) { display: none; }
アイコンに SVG を使用する
アイコンに SVG を使用しない理由:
.logo { background: url("logo.svg"); }
どの解像度でも SVG ズーム効果は非常に優れており、すべての IE9 以降のブラウザーをサポートしているため、png、jpg、gif ファイルの使用はやめてください
注: 次のコードは、次のようなユーザーのアクセシビリティを向上させることができます。補助デバイスを使用してインターネットにアクセスします:
.no-svg .icon-only:after { content: attr(aria-label); }
表示テキストを最適化します
すべてのデバイスでフォントが最適に表示されない場合があるため、デバイスのブラウザーを使用してください:
html { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
注: optimizeLegibility は責任を持って使用してください。さらに、IE/Edge はテキストレンダリングをサポートしていません
純粋な CSS スライドショーを実装するには max-height を使用してください
純粋な CSS スライドショーを実装するには非表示を超えて max-height を使用してください:
.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;/*显示多少行文本*/ }