python学习第二十八天(css)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CZ505632696/article/details/83549656

css介绍

CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。

html中引入css 的四种方式

1、行内式
行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。

<p style="background-color: rebeccapurple">你好</p>

2、嵌入式
嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中。格式如下

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{<--!p是标签名-->
            background-color: #2b99ff;
        }
    </style>
</head>

3、链接式
将一个.css文件(也就是上面代码中style里面的内容)引入到HTML文件中

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

4、导入式
将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,<style>标记也是写<head>标记中,使用的语法如下:

    
<style type="text/css">
 
          @import"mystyle.css"; <--!此处要注意.css文件的路径-->
 
</style> 

注意:

  导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷,而且导入式导入文件有个数限制。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。

css选择器

选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素

1、基础选择器
* : 通用元素选择器,匹配任何元素 * { margin:0; padding:0; }
E : 标签选择器,匹配所有使用E标签的元素 p { color:green; }。
.info:类选择器,匹配所有class属性等于info的元素 .info { background:#ff0; } 混用 p.info { background:blue; }表示匹配p标签中class属性等于info的。
#info,ID选择器,匹配所有id属性等于info的元素 #info { background:#ff0; }

2、 组合选择器
E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔 div,p { color:#f00; }
E F 后代元素选择器(包括子元素的子元素),匹配所有属于E元素后代的F元素,E和F之间用空格分隔 li a { font-weight:bold;
E > F 子元素选择器(不包括子元素的子元素),匹配所有E元素的子元素F div > p { color:#f00; }
E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F div + p { color:#f00; }

注意嵌套规则:
块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
li内可以包含div
块级元素与块级元素并列、内联元素与内联元素并列。

3、属性选择器

E[att] 匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略,比如“[cheacked]”。以下同。) p[title] { color:#f00; }

E[att=val] 匹配所有att属性等于“val”的E元素 div[class=”error”] { color:#f00; }

E[att~=val] 匹配所有att属性具有多个空格分隔的值(空格分割就是att对应多个值)、其中一个值等于“val”的E元素 td[class~=”name”] { color:#f00; }

E[attr^=val] 匹配属性值以指定值开头的每个元素 div[class^=“test”]{background:#ffff00;}

E[att$=val] 匹配属性值以指定值结尾的每个元素 div[class$=“test”]{background:#ffff00;}

E[attr*=val] 匹配属性值中包含指定值的每个元素 div[class*=“test”]{background:#ffff00;}

伪类(Pseudo-classes)

CSS伪类是用来给选择器添加一些特殊效果。
anchor伪类:专用于控制链接的显示效果

a:link(鼠标没有接触过的链接),用于定义了链接的常规状态。

a:hover(鼠标放在链接上的状态),用于产生视觉效果。

a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。

a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。

伪类选择器 : 伪类指的是标签的不同状态:

       a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

a:link {color: #FF0000} /* 未访问的链接 */

a:visited {color: #00FF00} /* 已访问的链接 */

a:hover {color: #FF00FF} /* 鼠标移动到链接上 */

a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }

补充:
.outer:hover .right{color: red}代表当鼠标移动到outer类元素时,它后代元素是right类时,后代元素color变为red。

before after伪类 :

:before p:before 在每个<p>元素之前插入内容
:after p:after 在每个<p>元素之后插入内容
p:after{ content:“hello”;color:red}

优先级

CSS优先级:

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。

样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
1 内联样式表的权值最高 style=""-------------------1000;
2 统计选择符中的ID属性个数。 #id -------------100
3 统计选择符中的CLASS属性个数。 .class -------------10
4 统计选择符中的HTML标签名个数。 p --------------1
按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。

<style>
        #p{
            color: rebeccapurple;
        }
        .p{
            color: #2459a2;
        }
        p{
            color: yellow;
        }
    </style>
<p id="p" class="p" style="color: deeppink">hello</p>

<--!这时候p标签的颜色应该是deeppink-->
1、文内的样式优先级为1,0,0,0,所以始终高于外部定义。这里文内样式指形如<div style="color:red>blah</div>的样式,而外部定义指经由<link>或<style>卷标定义的规则。

2、有!important声明的规则高于一切,如:p{color:red!important;}。

3、如果!important声明冲突,则比较优先权。

4、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。

5、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。

css 常用属性

1 、颜色属性
<div style=“color:blueviolet”>ppppp
<div style=“color:#ffee33”>ppppp
<div style=“color:rgb(255,0,0)”>ppppp
<div style=“color:rgba(255,0,0,0.5)”>ppppp <–!最后一个参数是透明度–>

2 、字体属性
font-size: 20px/50%/larger 大小
font-family:‘Lucida Bright’ 字体
font-weight: lighter/bold/border/
<h1 style=“font-style: oblique”>hello

3、背景属性
background-color: cornflowerblue
background-image: url(‘1.jpg’);
background-repeat: no-repeat;(repeat:平铺满)
background-position: right top(20px 20px);(横向:left center right)(纵向:top center bottom)
简写:<body style=“background: 20px 20px no-repeat #ff4 url(‘1.jpg’)”>
<div style=“width: 300px;height: 300px;background: 20px 20px no-repeat #ff4 url(‘1.jpg’)”>

4、文本属性
font-size: 10px;字体大小的
text-align: center; 横向排列,center剧中
line-height: 200px; 文本行高 通俗的讲,文字高度加上文字上下的空白区域
vertical-align:-4px 设置元素内容的垂直对齐方式 ,只对行内元素有效,对块级元素无效
text-indent: 150px; 首行缩进
letter-spacing: 10px; 字符之间的间隙
word-spacing: 20px; 单词之间的间隙,中文无效
text-transform: capitalize;

5、边框属性
border-style: solid; 风格
border-color: chartreuse; 颜色
border-width: 20px; 厚度
简写:border: 30px rebeccapurple solid;
还可以单独控制每一条边。border-top-,borde-bottom-,border-right-,
border-left-

6、列表属性
list-style: decimal-leading-zero;
list-style: none;
list-style: circle;
list-style: upper-alpha;
list-style: disc;
如:
ul,ol{
list-style: decimal-leading-zero;
}

7、 dispaly属性
display:none 隐藏标签
display:block 把内联标签变为块级标签
display:inline 把块级标签变为内联标签
display:inline-block 既可以设置宽和高又可以在一行显示多个标签。
注:内联标签不能设置宽和高,块级标签一行只能显示一个

8、内边距和外边距
margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
padding:用于控制内容与边框之间的距离;
Border(边框):围绕在内边距和内容外的边框。
Content(内容):盒子的内容,显示文本和图像。wight和height设置的就是content的宽和高。
在这里插入图片描述
在这里插入图片描述
简写形式:
margin:10px 5px 15px 20px;-----------上 右 下 左
margin:10px 5px 15px;----------------上 右左 下
margin:10px 5px;---------------------上下 右左
margin:10px; ---------------------上右下左

注意1:
边框在默认情况下会定位于浏览器窗口的左上角,但是并没有紧贴着浏览器的窗口的边框,这是因为body本身也是一个盒子(外层还有html),在默认情况下, body距离html会有若干像素的margin,具体数值因各个浏览器不尽相同,所以body中的盒子不会紧贴浏览器窗口的边框。
解决方法:

body{
    margin: 0;
}

注意2:
margin collapse(边界塌陷或者说边界重叠)
外边距的重叠只产生在普通流文档的上下外边距之间,这个看起来有点奇怪的规则,其实有其现实意义。设想,当我们上下排列一系列规则的块级元素(如段 落P)时,那么块元素之间因为外边距重叠的存在,段落之间就不会产生双倍的距离。
1兄弟标签:上面标签的margin-bottom和下面标签的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示
2父子标签:如果父级标签中没有 border,padding,content,子级标签的margin会一直向上找,直到找到某个父级标签包括border,padding, content中的其中一个,然后按此标签进行margin ;

猜你喜欢

转载自blog.csdn.net/CZ505632696/article/details/83549656