高度な CSS のヒント

Nov 22, 2016 am 10:00 AM
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 セレクターをサポートします

本文に行の高さ属性を追加します

行の高さ属性を <p> と <h*> に個別に追加する必要はありません。逆に、必要なのは本文に追加するだけです:

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 &gt; li:not(:last-child)::after {
  content: &quot;,&quot;;
}
ログイン後にコピー

: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(&quot;logo.svg&quot;);
}
ログイン後にコピー

どの解像度でも 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%;
}
ログイン後にコピー

这样,列之间的空白就会被均匀的填满

对空链接使用属性选择器

当<a>中没有文本而href不为空的时候,显示其链接:

a[href^=&quot;http&quot;]: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;/*显示多少行文本*/
}
ログイン後にコピー


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue におけるプレースホルダーの意味 Vue におけるプレースホルダーの意味 May 07, 2024 am 09:57 AM

Vue におけるプレースホルダーの意味

vueでスペースを書く方法 vueでスペースを書く方法 Apr 30, 2024 am 05:42 AM

vueでスペースを書く方法

vueでdomを取得する方法 vueでdomを取得する方法 Apr 30, 2024 am 05:36 AM

vueでdomを取得する方法

jsでのスパンの意味は何ですか jsでのスパンの意味は何ですか May 06, 2024 am 11:42 AM

jsでのスパンの意味は何ですか

jsでレムは何を意味しますか jsでレムは何を意味しますか May 06, 2024 am 11:30 AM

jsでレムは何を意味しますか

vueに画像を導入する方法 vueに画像を導入する方法 May 02, 2024 pm 10:48 PM

vueに画像を導入する方法

スパンタグの機能とは何ですか スパンタグの機能とは何ですか Apr 30, 2024 pm 01:54 PM

スパンタグの機能とは何ですか

プロンプトをjsでラップする方法 プロンプトをjsでラップする方法 May 01, 2024 am 06:24 AM

プロンプトをjsでラップする方法

See all articles