zoukankan      html  css  js  c++  java
  • CSS作用域问题

    今天去长虹面试,面试官问了一个问题,就是给一个div在三个地方设置不同的background,最后div显示的颜色是哪一个?
    当时我第一次回答的是最后一个,但是后来又改口说是第一个,回来一验证,证明自己错了,今天就总结一下CSS样式的作用域问题吧。

    样式优先级(内联样式的优先级最高)
    1. 浏览器缺省设置
    2. 外部样式表
    3. 内部样式表(位于head 标签内部)
    4. 内联样式(在 HTML 元素内部)

    外部样式表>浏览器缺省设置

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    </head>
    <body>
    <div>浏览器缺省样式</div>
    <div class="outStyle">外部样式</div>
    </body>
    </html>
    // cssTest.css
    .outStyle{
    width: 300px;
    height: 200px;
    background: gray;
    }

    结果:浏览器默认背景为白色,外部样式将背景调整为灰色

    内部样式表和外部样式表取决于引用位置,谁在后就以谁为准
    内部样式在前

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <style type="text/css">
    .outStyle{
    width: 300px;
    height: 200px;
    background: orange;
    }
    </style>    
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    </head>
    <body>
    <div class="outStyle">内部样式在前</div>
    </body>
    </html>
    // cssTest.css
    .outStyle{
    width: 300px;
    height: 200px;
    background: gray;
    }

    结果:内部样式失效,背景为灰色
    外部样式在前

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    <style type="text/css">
    .outStyle{
    width: 300px;
    height: 200px;
    background: orange;
    }
    </style>    
    </head>
    <body>
    <div class="outStyle">外部样式在前</div>
    </body>
    </html>

    结果:外部样式失效,背景为橙色

    内联样式优先级最高

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    <style type="text/css">
    .outStyle{
    width: 300px;
    height: 200px;
    background: orange;
    }
    </style>    
    </head>
    <body>
    <div class="outStyle">其他样式</div>
    <div style=" 300px;height: 200px;background: red;" class="outStyle">内联样式</div>
    </body>
    </html>
    // cssTest.css
    .outStyle{
    width: 300px;
    height: 200px;
    background: gray;
    }

    结果:外部样式和内部样式都失效,背景为红色

    当存在多重引用时,根据权重决定优先权

    1. 内联样式表的权值最高 1000

    2. id 选择器的权值为 100

    3. Class 类选择器的权值为 10

    4. HTML 标签选择器的权值为 1

    使用!important可以修改优先级,且优先级最高

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <style type="text/css">
    div{
    width: 300px;
    height: 200px;
    background: orange !important;
    
    }
    </style>    
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    </head>
    <body>
    <div id="id" class="outStyle"></div>
    </body>
    </html>
    // cssTest.css
    
    .outStyle{
    width: 300px;
    height: 200px;
    background: gray;
    }
    #id{
    width: 300px;
    height: 200px;
    background: red;
    }

    结果:div显示为橙色,此时虽然存在类选择器,id选择器和标签选择器,但是标签选择器中使用了!important属性,所以优先级最高

    当对同一个div进行多次样式修改时,以最近一次修改为准

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>cssTest</title>
    <link rel="stylesheet" type="text/css" href="../css/cssTest.css">
    </head>
    <body>
    <div class="outStyle"></div>
    </body>
    </html>
     // cssTest.css
    .outStyle{
    background: gray;
    width: 300px;
    height: 200px;
    background: red;
    }

    结果:div颜色为红色

  • 相关阅读:
    iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码
    iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码
    android支付宝首页、蚂蚁森林效果、视频背景、校园电台、载入收缩动画等源码
    iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码
    android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码
    Java_WebKit_ZC01
    Java_WebKit
    ZC_RemoteThread
    运行jar_测试代码
    运行jar_命令
  • 原文地址:https://www.cnblogs.com/tanwm/p/7554565.html
Copyright © 2011-2022 走看看