>  기사  >  웹 프론트엔드  >  고급 CSS 팁

고급 CSS 팁

高洛峰
高洛峰원래의
2016-11-22 10:00:531491검색

메뉴에 테두리를 추가/취소하려면 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 선택기를 지원합니다.

본문에 line-height 속성을 추가합니다

e388a4556c0f65e1904146cc1a846bee, 559b785d768baf49c9620501eda57184 줄 높이 속성을 각각 설정할 필요는 없습니다. 반대로 본문에 추가하면 됩니다.

body {
  line-height: 1;
}

이렇게 하면 텍스트 요소가 본문 속성

Vertical Center

에서 이 속성을 쉽게 상속할 수 있습니다.

html, body {
  height: 100%;
  margin: 0;
}
body {
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  display: -webkit-flex;
  display: flex;
}

참고: Flexbox에는 몇 가지 버그가 있습니다. IE11

쉼표를 사용하여 목록 구분

목록을 쉼표로 구분된 것처럼 보이게 만듭니다.

ul > li:not(:last-child)::after {
  content: ",";
}

:not(를 통해 마지막 요소 뒤의 쉼표를 제거합니다. ) 의사 클래스

음수 n번째 자식을 사용하여 요소 선택

음수 n번째 자식을 사용하여 1과 n 사이의 요소를 선택합니다.

li {
  display: none;
}
/* 选择第1到3个元素并显示它们 */
li:nth-child(-n+3) {
  display: block;
}

물론, 이해하시겠지만, 다음과 같이 할 수도 있습니다:

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는 텍스트 렌더링을 지원하지 않습니다

max-height를 사용하여 순수 CSS 슬라이드쇼 구현

숨김 너머로 max-height를 사용하여 순수 CSS 슬라이드쇼 구현:

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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:CSS 구문 요약다음 기사:CSS 구문 요약