zoukankan      html  css  js  c++  java
  • 幕客前端基础入门-css选择的艺术

    1. CSS简介

    CSS:Cascading Style Sheets层叠样式表,用来定义html内容在浏览器内的显示样式。
    为什么学习css?

    在html中通过标签属性也可以设置背景颜色、文字样式,但这样会导致网页的容量会很大,所以css为我们带来了以下的优势
         1.css简化html相关标签,网页体积小,下载快
          2.解决内容与表现分离的问题
          3.更好地维护网页,提高工作效率

    学习内容

    • css基础语法
    • css使用方法
    • css选择器
    • css继承和层叠
    • css优先级
    • css命名规范

    2. css基础语法

    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<style type="text/css">
    		/*选择器{属性:值;属性:值;} 其中一对属性值就是一个声明*/
    		h1{color:red;font-size:20px;}
    		/* 多个标签使用同一个样式,用英文' , '分隔 */
    		h1,h2,p{
    			font-size: 20px;
    		}
    		p{color: red;font-family: "DFKai-SB";}
    		h2{color:blue;}
    		/*css注释*/
    	</style>
    </head>
    <body></body>
    </html>
    

    3 CSS使用方法

    CSS引用有4种方式:行内样式(内联样式)、内部样式表(嵌入样式)、外部样式表、导入式

    3.1.行内样式

    <h1 style="color: red;font-size: 15px">行内样式</h1>
    

    3.2.内部样式表

    <head>
    	<style type="text/css">
    	<!--
    		.spical{
    			color: red;
    			text-decoration: underline;
    		}
    	-->
    	</style>
    </head>
    

    对于一些浏览器不识别style标签的时候,可以使用html注释标签把样式包括起来。浏览器有自己的版本,例如IE6、7、8,Chrome等。在style使用html注视标签包含样式表的目的是针对这些低版本的浏览器。
    对于一些低版本的浏览器,它不识别style标签。这时候它就会把样式表的内容先是在页面上,为了避免这个现象,就需要在style标签添加html注释包含我们的样式。这样低版本的浏览器不识别style标签,也不会把样式表的内容限制在页面上。对于高版本的浏览器来说,他识别style标签,就会忽略html注释标签,去解析样式表。

    3.3. CSS外部样式

    把CSS样式代码写在独立的一个文件中,然后引入

    <head>
          <link rel="stylesheet" type="text/css" href="muke.css">
    </head>
    

    3.4. CSS导入式

    <head>
    	<style type="text/css">
    		@import "muke.css";
    		或@import url(muke.css);
    	</style>
    </head>
    

    3.5. CSS使用方法的区别

    类别引入方法位置加载
    行内样式标签内stylehtml文件内同时
    内部样式 <head>中<style>内
    链入外部样式 <head>中<link>引用css样式文件与html文件分离页面加载时,同时加载css样式
    导入式@import在<head>中<style>最开始处在读取完html文件之后加载

    使用链入外部样式的好处

    • 1.css和html分开管理
    • 2.多个文件可以使用同一个样式文件
    • 3.多文件引用同一个CSS文件,CSS只需要下载一次。

    3.6 CSS使用方法优先级

    问题:对于同一个元素,同时使用这些方法来设置CSS样式,那种犯法才能真正的起作用呢?

    • 行内样式优先于内部样式
    • 内部样式优先于导入式样式
    • 内部样式和外部链接优先级取决于前后位置
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<style type="text/css">
    		@import "muke.css";
    		p1{
    			color: blue;font-size: 30px;
    		}
    	</style>
    	<!-- <link rel="stylesheet" type="text/css" href="muke2.css"> -->
    </head>
    <body>
    <p style="color:red;font-size: 10px">行内优先</p>
    <p>离谁近,就是谁</p>
    </body>
    </html>
    

    muke.css

    p{color:orange;font-size: 50px}
    

    muke2.css

    p{color:green;font-size: 100px;}
    

    总结

    • 行内样式优先
    • 其他样式取决于距离标签远近,越近越优先。

    4. CSS选择器

    css规则有两部分构成:选择器、声明

    <!-- 选择器{声明(属性:值);}-->
    

    4.1 标签选择器

    p1{color: blue;font-size: 30px;}
    

    以html标签作为选择器。通过标签选择器设置样式,那使用该标签的内容都是用该样式。

    4.2 类选择器

    .tip{color: blue;font-size: 30px;}
    

    为html标签添加class属性,通过类选择器来为具有词class属性的元素设置css样式。可对不同类型元设置同一个样式规则。同一个标签可以设置多个类,类之间用空格隔开。

    注意:ID和类选择器区分大小写

    4.3 ID选择器

    #desc{color: blue;font-size: 30px;}
    

    html标签添加ID属性,通过ID选择器来对具有此ID的元素设置CSS样式。
    ID选择器不能象class选择器一样定义多个标签,ID是唯一的,相当于身份证。同一个元素也不能同时引用多个ID。

    4.4 全局选择器

    *{color:blue;...}
    

    所有标签设置样式,使用通配符选择器。
    使用通配符会影响整个页面中所有元素的效果。所以在使用的时候,一定要谨慎。以往在开发的过程中,使用全局选择器在最开始现将所有元素的边距等样式去掉。

    4.5 群组选择器

    p,h1,h2{color:red};
    

    从一个元素到另一个元素,跨越了一层或多层的元素,就是祖先与后代的关系。body部分是浏览器展现的内容。html是所有元素的祖先,html成为根元素,具有相同父元素之间的元素,我们成为兄弟元素。

    4.6 后代选择器

    <style>
          /*p标签下面的em标签,使用空格分隔 */
          p em{font-size:40px;}
    </style>
    

    后代选择器虽然提高了效率,但是由于后代选择器权重和优先级的问题,它会影响我们样式的冲突,所以在使用后代选择器的时候,一定要注意这个问题(样式的冲突和权重优先级)。

    4.7 伪类选择器

    在不同状态下显示不同样式的方法,用id,class是无法设置的,需要使用伪类来设置。

    :link未访问的链接仅限于链接
    :visited已访问的链接仅限于链接
    :hover鼠标悬停状态可用于其他元素
    :active激活状态,即按下元素之后放开鼠标之前的时间可用于其他元素

    链接伪类的顺序 :link>:visited>:hover>:active

    • 1.a:hover必须至于a:link和a:visited之后,才有效
    • 2.a:active必须置于a:hover之后,才有效
    • 3.伪类名称对大小不敏感

    针对不同链接设置不同样式,只需加上类或id即可

            a:link{color:red;}
            a:visited{color:green;}
            a.one:hover{font-size:30px;font-weight: bold;}
            a:active{color:orange;}
            a{text-decoration: none}
    

    5.CSS继承、层叠和优先级

    5.1 CSS继承

    CSS继承:从父元素继承部分CSS属性
    继承的好处:

    • 1.父元素设置样式,自元素可以继承部分属性
    • 2.减少CSS代码
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<style type="text/css">
    		p{color: red}
    		div{font-size: 10px}
    	</style>
    </head>
    <body>
    	<div>
    		<p>CSS<span>继承</span></p><!-- span标签继承p标签的样式 -->
    		<div>CSS层叠</div>
    	</div>
    	<p>疑是地上霜</p>
    </body>
    </html>
    

    5.2 CSS层叠

    • 可以定义多个样式
    • 不冲突时,多个样式可层叠为一个
    • 冲突时,按不同样式规则的优先级来应用样式
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<style type="text/css">
    		p{color: red}
    		.one{font-size: 20px}
    		span{color: blue}
    	</style>
    </head>
    <body>
    	<p class="one">床前明月光,<span>疑是地上霜</span></p>
    </body>
    </html>
    

    6 CSS选择器优先级

    • ID选择器>class选择器>标签选择器
    • 同类样式多次引用,样式表中后定义的优先级高,就近原则
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<style type="text/css">
    		div{color: red;}
    		#idgreen{color: green;}
    		.classyellow{color:yellow;}
    		.classblue{color:blue;}
    		div{color:gray;}
    	</style>
    </head>
    <body>
    	<p>单独使用</p>
    	<div>使用标签选择器样式</div>
    	<div id="idgreen">使用ID样式“绿色”</div>
    	<div class="classblue">使用class样式“蓝色”</div>
    	<!-- 优先级结果:ID选择器>标签选择器;class选择器>标签选择器 -->
    	<p>同一个元素引用标签、ID、class定义的样式</p>
    	<div id="idgreen" class="classblue">CSS优先级,同时引用标签、ID、class定义的样式</div>
    	<div class="classblue" id="idgreen">CSS优先级,同时引用标签、ID、class定义的样式</div>
    	<!-- 优先级结果:ID选择器>class选择器>标签选择器 -->
    	<p>同一个元素引用多个class定义的样式</p>
    	<div class="classblue classyellow">CSS优先级,蓝色在前,黄色在后</div>
    	<div class="classyellow classblue">CSS优先级,黄色在前,蓝色在后</div>>
    	<p>同一个元素引用多个标签样式</p>
    	<div>CSS优先级</div>
    	<!-- 优先级结果:同类样式多次引用,样式表中后定义的优先级高,就近原则 -->
    </body>
    </html>
    

    选择器优先级规则
    同一样式表中:

    • 权值相同,就近原则(离备设置元素越近,优先级越高)
    • 权值不同,根据权值来判断样式,哪种CSS样式权值高,就采用哪种。
    选择器权值
    通配符选择器0
    标签选择器1
    类选择器和伪类选择器10
    ID选择器100
    行内选择器1000

    权值计算规则:

    • 统计不同选择器的个数
    • 每类选择器的个数乘以相应权值
    • 把所有的值相加得出选择器的权值
    #main div.warning h2{...}
    id: 1 * 100 = 100
    class: 1 * 10 = 10
    标签:2 * 1 = 2
    权值:100+10+2=112
    

    计算前面示例中样式权值

    		div{color: red;} /* 1 */
    		#idgreen{color: green;} /* 100 */
    		.classyellow{color:yellow;} /* 10 */
    		.classblue{color:blue;} /* 10 */
    		div{color:gray;} /* 1 */
    

    通过!important规则可以设置最高优先级

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>CSS优先级</title>
        <style type="text/css">
             /*补充代码*/
             ul li.li1{color:orange !important;}
        </style>
    </head>
    <body>
        <ul>
            <li style="color:green" class="li1">JS基础</li>  
            <li>JS函数</li> 
            <li>JS对象</li>
        </ul>
    </body>
    </html>
    

    CSS优先级总结:

    • 1.!important优先级是最高的
    • 2.CSS使用方法的优先级:行内样式>内部样式>外部样式
      * 注:link链入外部样式和style内部样式优先级,取决于先后顺序
    • 3.样式表中优先级
      • ID选择器>class选择器>标签选择器>通配符
      • 权值相同,就近原则;权值不同,使用权值高的

    7 CSS命名规范

    CSS命名规则:采用英文字母,数字以及‘_’和‘-’命名

    • 以小写字母开头,不能以数字和- _开头
    • 命名形式:单子,连字符,下划线和驼峰
    • 使用有意义的命名
    <!-- 一个单词,采用全部小写 -->
    .special{...}
    <!-- 多个单词,驼峰写法,除第一个单词外,其他首字母大写 -->
    .mainTitle{...}
    <!-- 采用_连接符-->
    .main_title{...}
    <!-- 采用-连接符-->
    .main-title{...}
    

    常用CSS样式命名

    • ID不要滥用,谨慎使用
    • 适当使用class
    页面结构
    页头header导航nav
    页面主体main侧栏sidebar
    页尾footer栏目column
    内容content/container页面外围控制wrapper
    容器container左右中left/right/center
    导航
    导航nav左导航leftsidebar
    主导航mainnav右导航rightsidebar
    子导航subnav菜单menu
    顶导航topnav子菜单submenu
    边导航sidebar标题title
    功能摘要summary
    标志logo注册register
    广告banner搜索search
    登陆login功能区shop
    登陆条loginbar标题title
  • 相关阅读:
    BZOJ-2743: [HEOI2012]采花(树状数组 or TLE莫队)
    BZOJ-1122: [POI2008]账本BBB (单调栈神题)
    2017年10月18日23:54:18
    [校内自测 NOIP模拟题] chenzeyu97要请客(单调栈)
    BZOJ-1057: [ZJOI2007]棋盘制作(单调栈)
    [校内自测] 奶牛编号 (递推+智商)
    [校内自测] Incr (LIS+智商)
    BZOJ1486 [HNOI2009]最小圈
    BZOJ2400 Spoj 839 Optimal Marks
    BZOJ2595 [Wc2008]游览计划
  • 原文地址:https://www.cnblogs.com/csj2018/p/12919493.html
Copyright © 2011-2022 走看看