本文是这些天阅读慕课网的css基础篇部分所作的笔记。
1、CSS全称“层叠样式表”
类似代码,某类型{ 改变内容}
p{
font-size : 12px;
color : red
}
2、语法
由选择符和声明(属性:值)组成。
3、CSS代码样式
内联式
直接把css代码用在html标签里面。
"color : red;font-size:18px">红色
嵌入式
外部式
"base.css" rel="stylesheet" type="text/css" />
**rel=“stylesheet” type=“text/css”**不可修改
样式优先级 内联 > 嵌入 > 外部 就近原则
嵌入大于外部的前提,写嵌入的在外部的后面
每条css样式都由选择器和样式组成。
选择器{
样式;
}
选择器指明了{}的样式的作用对象,而样式作用于网页的哪些元素。
就是html中的标签,如html、body、h1、p、img等
p{
样式}
.类选择器名称{
样式}
公开课 //在body中
.setGreen{
color:green;
} //这个必须在head中
id选择器类似于类选择符,but
xxx
#setGreen{
color : green;
}
类与ID选择器的区别
可将id视为人的名字
类选择器可以用多次,而id选择器只能用一次
类选择器词列表方法可以为一个元素设置多个样式,而id只能一个,就如一个人一个id名称标记
"a11">xxx "a11">kkkk 对
"a11">xxx "a11">kkk 错
"name1 name2"> 对
"name1 name2"> 错
用 > 选择指定标签的第一代子元素。如
.food > li{
border:1px solid red;}
即使class名为food的子元素li加入红色实线框。
加入空格,用于选择指定标签元素下的所有后辈元素。
.first span{
样式}
大于号 > 作用第一个后代,空格是所有后代
功能最强大,即使用星号 *
作用是匹配html中所有标签元素。如将任意标签设置为红色。
* {
color: red}
可以给html不存在的标签(标签的某种状态)设置样式
如给html的一个标签元素加鼠标滑过的状态
a:hover{
color : red }
目前,能兼容all浏览器的就就是 a:hover了, :hover可放在任意标签上,就是兼容性不如a好
为html中的多个标签设置同一个样式时。可用到分组选择符,即逗号。
h1,span{
color:red;}
相当于 h1{
color:red} span{
color:red}
他的某些样式不仅应用于某个特定html元素,其子元素也可以应用。
某些css不行,不具有继承。如border:1px solid red;
p{
color:red}
啦啦啦xxxxx
多个混在一起,权值决定取哪种样式。 如
p{
color:red;}
.first{
color:green;}
"first">三年级时,我还是一个胆小如鼠的小女孩。
最终为绿色,因为类的权值大
权值规则:
标签的权值为1,类选择器的权值为10,ID选择器的权值最高为100
继承也有权值,但是最低,几乎没有,有文献提出为0.1
层叠就是在html文件中对于同一个元素可以有多个css样式存在,当有相同权重的样式存在时,会根据这些css样式的前后顺序来决定,处于最后面的css样式会被应用。即就近原则。
内联样式表(标签内部) > 嵌入样式表(当前文件夹) > 外部样式表(外部文件中)
p{
color:red;}
p{
color:green;}
"first">三年级时,我还是一个胆小如鼠的小女孩。
最后为绿色
给样式设置最高权值,使用**!important**,!在分号的前面。
p{
color:red!important;}
p{
color:green;}
"first">三年级时,我还是一个胆小如鼠的小女孩。
最后为红色
样式默认优先级 浏览器默认的样式 < 网页制作者样式 < 用户自己设置的样式
但是 !important优先级样式是个例外,权值高于用户自己设置的样式
body{
font-family:"微软雅黑";}
或者 body{
font-family:"Microsoft Yahei";}
里面的字可以是汉字也可以是英文。注意,用户本地无对应字体,就会使用默认的。
body{
font-size:18px;color:#666;}
a{
font-weight:bold;}
a{
font-style:italic;}
a{
text-decoration:underline;}
p{
text-decoration:line-through;}
p{
text-indent:2em;}
首行缩进2字符,1em一个空格。
p{
line-height:1.5em;} //为行间距的1.5倍,行高1.5em
中文的字间距
h1{
letter-spacing:20px;}
了不起
字母之间的间距
h1{
word-spacing:20px;}
hello word
为块状元素中的文本、图像设置样式,可以用text-align
h1{
text-align:center;} //center/rigth/left
html标签元素分为三类。块级元素、内联元素(行内元素)、内联块状元素(行内块元素)。
div、p、h1、form、ul、li都是常见的块级元素。 这些标签都具有盒子模型的特征。
设置display:block就是将元素显示为块级元素。
如以下将内联元素a转为块级元素。从而使a元素具有块级元素的特点
a{
display:block;}
块级元素特点
span、a、label、strong、em为典型的inline元素。
且块状元素可以通过display:inline将元素设置为内联元素。 如将块级div转为内联
div{
display:inline;}
内联元素特点
img、input为典型的inline-block元素。
内联块状元素具有内联元素和块状元素的特点。用display:inline-block可将元素设置为内联块状元素。
a{
display:inline-block;}
内联块状元素特点
盒子模型的边框就是围绕着内容及补白的线。这条线可以设置他的粗细、样式、和颜色。 (边框三要素)
也可以 p{
boreder: 2px dotted #666;} //宽度、样式、颜色。
border-top 上 border-bottom 下 border-right 右 border-left 左
如 p{
border-top:1px solid #666;}
CSS内定义的高度和宽度是指填充以里的内容范围。
so一个元素的实际宽度(盒子的宽度)==左边界+左边框+左填充+内容宽度+右填充+右边框+右边界
高度同理
元素内容与边框之间的距离。填充为上、右、下、左------顺时针。
div{
padding : 20px 10px 15px 30px;}
padding-top/right/bottom/left
若全部一样,则div{
padding : 20px}
上下一致,左右一致,则div{
padding : 10px 20px ;}
元素和其他元素之间的距离,margin设置。边界分为上、右、下、左-----顺时针。
div{
margin : 20px 10px 20px 10px;}
也可以分开写 margin-top/right/bottom/left
全一样,div{
margin:10px;}
上下一致、左右一致。 div{
margin : 20px 10px;}
总结:padding在边框里,margin在边框外。
布局模型是在盒模型的基础上建立的。
3种基本的模型有Flow流动模型、Float浮动模型、Layer层模型。
是浏览器默认的网页布局模式。具有以下特征
#box1{
width:300px;
height:100px;
}
div,h1,p{
border:1px solid red;
}
"box2">box2
标题
文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段文本段。
"box1">box1--块状元素,由于设置了width:300px,宽度显示为300px-->
内联元素都会在所处的包含元素内从左到右水平分布显示。不会如块元素一样占一行。
<a href="http://www.imooc.com">www.imooc.coma><span>强调span><em>重点em>
<strong>强调strong>
结果为: www.imooc.com强调重点 强调 从左到右 一行
question:块元素占一行,but想让其两个块元素在一行,怎么做?
answer:设置元素浮动就ok了。
任何元素默认都是非浮动的,需借助css大法。
如设置div浮动
div{
float : right/left; 为right则靠右侧浮动,为left则靠左侧浮动。
}
CSS定义了一组定位属性来支持布局模型。让html元素在网页中精准定位。
层模型型有三种形式:绝对定位(position:absolute)、相对定位(position:relative)、固定定位(position:fixed)。
这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。
意思就是说,将元素的一个盒子,相对于父盒子的位置,没有父盒子,则相对于body元素。
div{
width:200px;
height:200px;
border:2px red solid;
position:absolute;
left:100px;
top:50px;
}
"div1">
如,div相对于浏览器窗口向右移动100px,向下50px
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sqY899Pf-1586413264163)(https://s1.ax1x.com/2020/04/08/GhAO4P.png)]
如下代码实现相对于以前位置向下移动50px,向右移动100px;
#div1{
width:200px;
height:200px;
border:2px red solid;
position:relative; //相对定位 相对以前位置
left:100px; //向右移动就是left
top:50px; //向下移动就是top
}
"div1">
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouCVEPMd-1586413264164)(https://s1.ax1x.com/2020/04/08/GhVcJx.png)]
fixed表示固定定位,与absolute相似,但是他的相对移动坐标是视图(屏幕内的网页窗口)本身。
本身固定不会随着浏览器窗口的滚动条滚动而变化。与background-attachment:fixed一致。
一直在那地方不变,不会随着改变而改变,就如那个红框一直在那里位置不变。
相对于浏览器视图向右移动100px,向下移动50px
#div1{
width:200px;
height:200px;
border:2px red solid;
position:fixed;
left:100px;
top:50px;
}
文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。
......
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPNwP88C-1586413264165)(https://s1.ax1x.com/2020/04/08/GhncHe.gif)]
absolute相对于浏览器body定位,同时还可相对于其他元素定位,这时就需要relative的帮助
"box1">
"box2">相对参照元素进行定位
box1是box2的父元素,所以也是前辈元素。
#box1{
width : 200px;
height :200px;
position : relative;
}
#box2{
position:absolute;
top:20px;
left:30px;
}
所以这里box2就可以相对于父元素box1定位了,这里参照物就不是浏览器,而是自由设置的了。
简写可以减少带宽的使用。
外边距margin、内边距padding、边框border。设置顺序—顺时针,上、右、下、左。
如果都相同,可写为 margin:10px;
如果上下相同,左右相同 margin: 10px 20px;(上下,左右)
如果左右相同 margin:10px 20px 30px 20px写为 margin:10px 20px 30px;
padding、border类似。
写16进制的颜色时,每两位相同可写相同的那一位。
如 #336699 可简写为 #369
body{
font-style:italic;
font-variant:small-caps;
font-weight:bold;
font-size:12px;
line-height:1.5em;
font-family:"宋体",sans-serif;
}
简写为
body{
font : italic small-caps bold 12px/1.5em "宋体",sans-serif;
}
大多数针对中文网,所以以下代码常见
body{
font:12px/1.5em "宋体",sans-serif;
}
//只有字号、行间距、中文字体、英文字体设置。
字体颜色color、背景颜色background-color、边框颜色border等
英文命令
p{
color:red;}
RGB颜色
每一项都在0~255之间,同时也可以用0% ~100%来表示。
p{
color:rgb(133,45,26);}
p{
color:rgb(20%,66%,99%);}
十六进制颜色
原理就是rgb,不过将0~255变成了00 ~ ff
p{
color:#336699;}
px、em、%这些都是相对单位
像素px
em就是给定的font-size值
如果font-size为18px,那么1em=18px。
p{
font-size : 12px; text-align : 2em} //就是说段落首行缩进24px,即两个字体的大小距离
如果给元素font-size设置为em时,则具体大小是根据其父元素的font-size。
//html部分
这个例子为例
//css
p{
font-size:14px;}
span{
font-size:0.8em;} //span中“例子”字体大小就是14*0.8=11.2px
百分比%
p{
font-size:12px;line-height:120%} //行高为字体的1.2倍,12*1.2=14.4px
分两种,行内与块状,块状有分为定宽块状和不定宽块状。
如果被设置的是文本、图像等行内元素时,水平居中是通过给父元素设置text-align:center来实现的。
<body>
<div class="txtCenter">在父容器中居中。div>
body> //div是这个文本的父元素。这个文本是这个文本的子元素。
块状元素的宽度width为定值。
所以通过左右margin值为auto来实现居中。
居中
div{
border:1px solid red; //为突显效果,设置个边框。
width:200px; //定宽
margin:20px auto; //即上下为20px,左右为auto。
}
//亦可margin-left:auto;margin-right:auto;
width 和margin缺一不可。如果没有width则没用。
块状元素的width不确定,如网页的分页导航。
有三种方法
① table方法
<div>
<table>
<tbody>
<tr><td>
<ul>
<li>我是第一行文本li>
<li>我是第二行文本li>
ul>
td>tr>
tbody>
table>
div>
② display方法
改变块级元素的display为inline类型,设置为行内元素显示。然后使用text-align:center实现居中效果。
<body>
<div class="container">
<ul>
<li><a href="#">1a>li>
<li><a href="#">2a>li>
<li><a href="#">3a>li>
ul>
div>
body>
这种方法就是不用增加无语义标签,但是却转为了行内元素,缺少了一些功能,如设定长度。
③ 设置浮动和相对定位
给父元素设置float然后给父元素设置position:relative和left:50%,子元素设置position:relative和left:-50%来实现水平居中。
<body>
<div class="container">
<ul>
<li><a href="#">1a>li>
<li><a href="#">2a>li>
<li><a href="#">3a>li>
ul>
div>
body>
//css部分
<style>
.container{
float:left;
position:relative;
left:50%
}
.container ul{
list-style:none;
margin:0;
padding:0;
position:relative;
left:-50%;
}
.container li{
float:left;display:inline;margin-right:8px;}
style>
通过设置父元素的height和line-height高度一致来实现。height元素高度,line-height行高。
line-height与font-size的计算值之差在CSS中成为行间距。但这种文字行高与块高一致,有弊端,当文字内容长度大于块宽度时,就有内容脱离了块。
<div class="container">
hello world!
div>
方法一、插入table(包括tbody、tr、td)标签,同时设置vertical-align:middle
在父元素设置vertical-align样式时,会对inline-block类型的子元素都有用。
看我是否可以居中。
css部分
table td{
height:500px;background:#ccc}
方法二、设置块级元素的display为table-cell(设置为单元表格显示),激活vertical-align属性。此方法兼容性差。
看我是否可以居中。
看我是否可以居中。
看我是否可以居中。
css部分
不论什么元素除display:none外,只要position:absolute或float:left/right ,有这些元素的display类型会自动变为以display:inline-block(块状元素)显示。且可设置元素的width和height,默认宽度不占满父元素。
如a是行内元素,无width,但设置position:absolute 后,就可以了。
css部分