>  기사  >  웹 프론트엔드  >  쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

青灯夜游
青灯夜游앞으로
2020-11-11 18:09:231941검색

쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

CSS를 처음 배울 때는 매우 간단하게 느껴지지만, 더 많이 배울수록 CSS의 깊이가 얼마나 깊었는지 깨닫게 될 것입니다. 자주 접하게 되는 몇 가지 함정을 정리해 보겠습니다.

추천 튜토리얼: CSS 비디오 튜토리얼

대소문자 구분 안함

CSS를 작성할 때 일반적으로 소문자를 사용하지만 사실 CSS는 대소문자를 구분하지 않습니다

.test{
    background-COLOR:#a00;
    width:100px;
    height: 100px;
}

쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

배경색이지만 배경색은 배경으로 작성됩니다. -COLOR인데 소문자로 쓰는 이유는 xhtml 표준 때문인데, xhtml이 아니더라도 소문자로 쓰는 게 예쁘고 읽기 편하고, 가능한 변환 요구 사항에 대처할 수 있습니다

서버 우선 순위 선택

두 개의 규칙이 동일한 html 요소에 적용될 때 정의된 속성이 충돌하고 그 값을 사용해야 하는 경우 CSS에는 일련의 우선 순위 정의가 있습니다.

다른 수준

  • 속성 뒤에 !important를 사용하면 페이지 내 어디에서나 정의된 요소 스타일이 재정의됩니다.

  • 스타일 속성으로 요소 내부에 작성된 스타일

  • id selector

  • class selector

  • tag selector

  • wildcard selector

  • custom 또는 상속

동일함 level

같은 레벨에서 나중에 작성된 스타일이 먼저 작성된 스타일을 덮어씁니다

위의 레벨은 여전히 ​​이해하기 쉽지만 일부 규칙은 다음과 같이 여러 레벨의 조합입니다

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div.test{
            background-COLOR:#a00;
            width:100px;
            height: 100px;
        }

        .test.test2{
            background-COLOR:#0e0;
            width:100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="test test2"></div>
</body>
</html>

어떤 규칙에 div가 적용되나요? 간단한 계산 방법이 있습니다. (정원에서 알려드린대로, 가중치는 실제로 소수점을 기준으로 한 것이 아닙니다. 숫자로 표현한 것은 단지 아이디어를 설명하기 위한 것입니다. 10,000개의 클래스는 ID 하나의 가중치만큼 높지 않습니다.)

  • 인라인 스타일시트의 가중치는 1000

  • ID 선택자의 가중치는 100

  • Class 클래스 선택자의 가중치는 10

  • HTML 태그 선택자의 가중치는 1

선택기에 해당 규칙을 추가하고 가중치를 비교할 수 있습니다. 가중치가 동일하면 div.class의 가중치는 1+10=11이고 가중치는 .test1입니다. test2의 값은 10+10=20이므로 div는 .test1 .test2를 적용하고 녹색으로 변합니다

쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

인라인 요소의 일부 속성

모든 속성이 인라인 요소에 적용되는 것은 아닙니다.

  1. 너비 인라인 요소에는 속성이 적용되지 않으며 내용에 따라 길이가 늘어납니다

  2. 인라인 요소에는 height 속성이 적용되지 않으며 높이도 내용에 따라 늘어나지만 높이는 line을 통해 조정할 수 있습니다. -height

  3. 인라인 요소의 패딩 속성은 padding-left 및 padding-bottom에만 적용됩니다. padding-top 및 padding-bottom은 요소의 범위를 변경하지만 다른 요소에는 영향을 미치지 않습니다. 인라인 요소의 margin 속성에는 margin만 있습니다. -left 및 margin-right는 유효하고 margin-top 및 margin-bottom은 유효하지 않습니다.

  4. 인라인 요소의 Overflow 속성은 말할 필요도 없이 Vertical-align 속성이 유효하지 않습니다. 인라인 요소가 유효하지 않습니다(높이 속성이 유효하지 않습니다)

  5. <div style="background-color: #a44;">
      <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0e0;">
       123456789123456789</span>
      </div>
    
      <div style="background-color: #a44;">
      <span style="padding:4px; margin:8px; height: 500px; width:1000px; background-color:#0a0;">
          123456789</span>
      </div>

  6. 예에서 볼 수 있듯이, 범위에 설정한 너비 및 높이 속성은 적용되지 않으며, margin-top 및 margin-bottom은 유효하지 않습니다. , padding-top 및 padding-bottom은 요소의 범위를 변경하지만(배경 영역이 더 크게 변경됨) 다음 요소의 위치에는 영향을 주지 않습니다.

  7. 상호 배타적인 일부 요소

쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

절대 및 고정의 경우 위치 지정(고정 크기, 너비 및 높이 속성이 설정됨) 요소의 경우 상단 및 왼쪽 속성이 설정된 경우 하단 및 오른쪽 값을 설정하면 상단 및 왼쪽의 우선 순위가 높아집니다. 브라우저는 동일한 코드에 따라 위치를 지정할 위치를 알 수 있습니까? 절대 및 고정 위치 요소의 경우 위쪽 및 왼쪽 값이 설정되고 아래쪽, 오른쪽 값이 설정되면 여백 속성이 작동하지 않습니다.

절대 및 고정 위치 요소의 경우 위쪽, 왼쪽, 아래쪽, 오른쪽 값이 설정되면 부동 속성도 유효하지 않습니다

  1. 블록 요소가 부동 속성이나 절대 또는 고정 위치 지정으로 설정된 경우 수직 정렬 속성이 더 이상 작동하지 않습니다

  2. 글꼴 크기 단위
  3. 글꼴 크기를 작성할 때 일반적으로 사용되는 단위는

  4. px

pt

em

  • rem

  • 입니다.
  • 이 글꼴은 무엇을 의미하나요? ?

  • 1.픽셀(Pixel)의 약어로, 웹서핑을 하는 동안 화면의 해상도에 따라 화면에 나타나는 텍스트, 그림 등이 100픽셀의 너비로 변경됩니다. 800×600의 해상도를 가지게 됩니다. 1024×768에서는 화면 너비의 1/8을 차지하지만, 1024×768에서는 약 1/10만 차지합니다.
  • 所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。 

    2、pt是point(磅)缩写,是一种固定长度的度量单位,大小为1/72英寸。如果在web上使用pt做单位的文字,字体的大小在不同屏幕(同样分辨率)下一样,这样可能会对排版有影响,但在Word中使用pt相当方便。

    因为使用Word主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt作为一个自然长度单位就方便实用了:比如Word中普通的文档都用“宋体 9pt”,标题用“黑体 16pt”等等,无论电脑怎么设置,打印出来永远就是这么大。

    3、em:是相对单位,是一个相对长度单位,最初是指字母M的宽度,所以叫em,现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等。

    通常1em=16px(浏览器默认字体大小16px),em是指父元素的字体大小。在一个页面上给定了一个父元素的字体大小,这样就可以通过调整一个元素来成比例的改变所有元素大小.它可以自由缩放,比如用来制作可伸缩的样式表。

    类似还有ex的概念,ex 相对于字符“x”的高度,此高度通常为字体尺寸的一半。

    4、rem:rem是CSS新增的,em是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在多次使用时,就会带来无法预知的错误风险。

    而rem是相对于根元素(r:root),使用rem我们只需要在根元素确定一个参考值,然后就可以控制整个html页面所有字体了。

    :checked 选择器范围

    我们知道:checked会选择被选中的checkbox和radio,看个例子

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            :checked{
                margin: 10px;
            }
        </style>
    </head>
    <body>
        <input id="t1" type="checkbox" checked/>
        <input id="t3" type="radio" checked/>
        <select>
            <option id="t2">test</option>
            <option id="t4">test2</option>
        </select>
    </body>
    </html>

    쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

    对于前两个margin变成10px我们不奇怪,但是当我们看select的option的时候会发现被选中的option的margin业变成了10px,没有被选中的option则没有变化!

    쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.

    是的:checked也会选择被选中的option

    并不是所有图片都会被加载

    我们知道写在页面上的img标签,无论显示与否,图片都会被加载(所以试图通过对图片display:none来达到节省网络流量的做法就省省吧。。。),我们也经常使用backgroung-image等css属性为页面添加图片,这些图片是不是一定会被加载呢,看个例子

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            .useless{
                background-image: url(images/0.jpg);
            }
            .hidden{
                background-image: url(images/1.jpg);
            }
            .none{
                background-image: url(images/2.jpg);
            }
            .parentHidden{
                background-image: url(images/3.jpg);
            }
            .parentNone{
                background-image: url(images/4.jpg);
            }
        </style>
    </head>
    <body>
        <div></div>
    
        <div></div>
    
        <div style="visibility:hidden;">
            <div></div>
        </div>
    
        <div style="display:none;">
            <div></div>
        </div>
        
        <div style="display:none">
            <img  src="images/5.jpg" alt="쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요." ></div>
    </body>
    </html>

    看一下网络监视情况(怎么柳岩的照片变小后感觉怪怪的。。。)

    쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요. 我们可以发现图片0和4没有被下载,0是没有用到的CSS,4是父容器的display被设为none的情况,这两种情况下的CSS引用的图片是不会被加载的,而父容器设置visibility属性为hidden仍然会加载图片,不要搞混了

    更多编程相关知识,请访问:编程入门!!

위 내용은 쉽게 간과되는 CSS의 기능을 이해하고 몇 가지 일반적인 함정을 피하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제