一
一、CSS简介
1.1、什么是CSS?
CSS(Cascading style sheets):层叠样式表
CSS作用:给页面中的HTML标签设置样式
1.2、CSS语法规则
写在哪里?
css写在style标签中,style标签一般写在head标签里面,title标签下面;
怎么写?
利用css选择器
1.3、css初体验
常见属性:
color:文字颜色;
font-size:字体大小;
background-color:背景颜色;
width:宽度;
height:高度;
css标点符号都是英文状态下的;每一个样式键值对写完之后都需要加分号结尾;
<head>
<style>
p{
/* 文本颜色 */
color: red;
/* 文字大小 */
font-size: 30px;
/* 背景颜色 */
background-color: skyblue;
/* 宽度 */
width: 300px;
/* 高度 */
height: 300px;
}
</style>
</head>
<body>
<p>你好,世界</p>
</body>
1.4、CSS 引入方式
内嵌式:CSS写在style标签中
style标签虽然可以写在页面任意位置,但是通常约定写在head标签中;
外联式:CSS写在单独的一个.css文件中
需要通过link标签在网页中引入;
行内式:CSS写在标签的style属性中
配合js使用;
二、基础选择器
1、标签选择器
结构:标签名{css属性名:属性值;}
作用:通过标签名找到页面中所有这一类标签,设置样式
注意点:标签选择器选择的是一类标签,而不是单独某一个;
标签选择器无论嵌套关系有多深,都能找到对应的标签;
<head>
<style>
p{
color: red;
}
div{
color:skyblue;
}
</style>
</head>
<body>
<p>我是一个p</p>
<p>我是一个p</p>
<div>我是div</div>
<div>我是一个div</div>
<div>
<div>
<div>
<p>我是一个p</p>
</div>
</div>
</div>
</body>
2、类选择器
结构:.类名{css属性名:属性值;}
作用:通过类名,找到页面中所有带这个类名的标签,设置样式
注意点:所有标签上都有class属性,class属性的属性值称为类名(类似于名字);
类名可以由数字、字母、下划线、中划线组成,但不能以数字或者中划线开头;
一个标签可以同时有多个类名,类名之间以空格隔开;
类名可以重复,一个类选择器可以同时选中多个标签;
<style>
.red{
color: red;
}
.yellow{
color: yellow;
}
.pink{
color: pink;
}
</style>
<body>
<p class="red big">小红</p>
<p class="red">小红2</p>
<p class="yellow">小黄</p>
<p class="pink">小粉</p>
</body>
3、id选择器
结构:#id属性值{css属性名:属性值;}
作用:通过id属性值,找到页面中带有这个id属性值的标签,设置样式;
注意点:所有标签上都有id属性;
id属性值类似于身份证号码,在一个页面中是唯一且不可重复的;
一个标签上只能有一个id属性值;
一个id选择器只能选中一个标签;
#one{
color: purple;
}
#two{
color:royalblue;
}
<div id="one">id选择器1</div>
<div id="two">id选择器2</div>
类与id的区别:
class类名与id属性值的区别:
class类名相当于姓名,可以重复,一个标签可以同时有多个class类名;
id属性值相当于身份证号码,不可重复,一个标签只能有一个id属性值;
类选择器与id选择器的区别?
类选择器以 . 开头;
id选择器以 # 开头;
实际开发的情况:
类选择器用的最多;
id一般配合js使用,除非特殊情况,否则不要使用id设置样式;
实际开发中会遇到冗余代码的抽取(将一些公共代码抽取到一个公共的类中);
4、通配符选择器
结构:*{css属性名:属性值;}
作用:找到页面中所有的标签,设置样式;
注意点:开发中使用极少,只会在极特殊情况下才会用到;
在基础小页面中可能会用于去除标签默认的margin和padding;
*{
color:seagreen;
}
<p>我是p</p>
<h1>我是h1</h1>
<div>我是div</div>
<span>我是span</span>
三、 字体和文本样式
1、字体样式
1.1、字体大小 font-size
属性名:font-size
取值:数字 + px
注意点:谷歌浏览器默认文字大小是16px;单位需要设置,否则无效;
1.2、字体粗细 font-weight
属性名:font-weight
取值:
关键字:normal 正常
bold 加粗
纯数字:100~900的整百数
400 正常
700 加粗
注意点:不是所有字体都提供了九种粗细,因此部分取值页面中无变化;
实际开发中以正常、加粗两种取值使用最多;
1.3、字体样式 (是否倾斜) font-style
属性名: font-style
取值:正常 normal
倾斜 italic
1.4、常见字体系列
无衬线字体:(sans-serif)
特点:文字笔画粗细均匀,并且首尾无装饰;
场景:网页中大多采用无衬线字体;
常见该系列字体:黑体、Arial;
衬线字体:(serif)
特点:文字笔画粗细不均,并且首尾有笔锋装饰;
场景:报刊书籍中应用广泛;
常见该系列字体:宋体、Times New Roman;
等宽字体:(monospace)
特点:每个字母或文字的宽度相等;
场景:一般用于程序代码书写,有利于代码的阅读和编写;
常见该系列字体:Consolas、fira code
1.5、字体类型 font-family
属性名:font-family
常见取值:具体字体1,具体字体2,具体字体3,具体字体4,.... ,字体系列
具体字体:微软雅黑、黑体、宋体、楷体等.....
字体系列:sans-serif、serif、monospace等.....
渲染规则:从左往右按顺序查找,如果电脑中未安装该字体,则显示下一个字体;
如果都不支持,此时会根据操作系统。显示最后字体系列的默认字体;
注意点:如果字体名称中存在多个单词,推荐使用引号包裹;
最后一项字体系列不需要引号包裹;
网页开发时,尽量使用系统常见自带字体,保证不同用户浏览网页都可以正常显示
1.6、样式的层叠问题
如果给同一个标签设置了相同的属性,此时样式会层叠(覆盖),写在最下面的会生效;
p{
/* 字体大小 */
font-size: 30px;
/* 字体粗细 */
font-weight: 700;
/* 字体样式 */
font-style:italic;
/* 字体类型 */
font-family: 楷体;
}
<p>我是1个p</p>
1.7、字体font相关属性的连写
属性名:font
取值:font:style weight size family
顺序要求:swsf(稍微舒服)
省略要求:只能省略前两个,如果省略了相当于设置了默认值;
注意点:如果需要同时设置单独和连写方式
要么把单独的样式写在连写的下面。要么 把单独的样式写在连写的里面;
p{
/* 字体大小 */
font-size: 30px;
/* 字体粗细 */
font-weight: 700;
/* 字体样式 */
font-style:italic;
/* 字体类型 */
font-family: 楷体;
}
div{
font:italic 700 30px 楷体;
}
span{
font:30px 楷体;
}
<p>我是1个p</p>
<div>我是一个div</div>
<span>我是一个span</span>
2、文本样式
2.1 文本缩进
属性名:text-indent
取值:数字 + px
数字 + em (推荐: 1em = 当前标签的font-size的大小)
2.2、文本水平对齐方式
属性名:text-align
left:左对齐
center:居中
right:右对齐
如果需要让文本水平居中,text-align属性给文本所在标签(文本的父元素)设置
2.3、文本修饰
属性名:text-decoration
下划线:underline
删除线:line-throught
上划线:overline
无装饰线:none
开发中会使用text-decoration:none清除 a 标签默认的下划线;
2.4、水平居中方法总结
text-align:center;
text-align:center能让哪些元素水平居中?
文本、span标签、a标签、input标签、img标签
如果需要让以上元素水平居中,texttext-align:center;需要给以上元素的父元素设置;
margin:0 auto;
如果需要让div、p、h(大盒子)水平居中,可以使用margin:0 auto;实现;
如果需要让div、p、h(大盒子)水平居中,直接给当前元素本身设置即可;
margin:0 auto;一般针对于固定宽度的盒子,如果大盒子没有设置宽度,此时会默认占满父元素的宽度;
3、行高
作用:控制行间距(给一行上下增加间距)
属性名:line-height
取值: 数字 + px / 倍数( 当前标签font-size的倍数)
应用:让单行文本垂直居中可以设置line-height:文字父元素高度;
网页精准布局时,会设置line-height:1可以取消上下间距;
行高与font连写的注意点:
如果同时设置了行高和font连写,注意覆盖问题;
font:style weight size/line-height family
四、案例
<style>
.box{
width: 800px;
/* height: 800px; */
/* background-color: rgb(41, 106, 128); */
margin: 0 auto;
}
h1{
text-align: center;
}
.info{
text-align: center;
}
.time{
color: #808080;
}
.sina{
color: #87ceeb;
font-weight: 700;
}
.link{
text-decoration: none;
}
p{
text-indent: 2em;
}
</style>
<body>
<div class="box">
<h1>《生命》</h1>
<div class="info">
<span class="time">沈从文(1902—1988)</span>
<span class="sina">新浪科技</span>
<span class="link"><a href="#">收藏本文</a></span>
</div>
<hr>
<p>我好像为什么事情很悲哀,我想起“生命”。</p>
<p>……</p>
<p>有什么人能用绿竹作弓矢,射入云空,永不落下?我之想象,犹如长箭,向云空射去,去即不返。长箭所注,在碧蓝而明静之广大虚空。</p>
<p>明智者若善用其明智,即可从此云空中,读示一小文,文中有微叹与沉默,色与香,爱和怨。无著者姓名。无年月。无故事。
无……然而内容极柔美。虚空静寂,读者灵魂中如有音乐。虚空明蓝,读者灵魂上却光明净洁。</p>
<p>大门前石板路有一个斜坡,坡上有绿树成行,长干弱枝,翠叶积叠,如翠等,如羽葆,如旗帜。常有山灵,
秀腰白齿,往来其间。遇之者即喑哑。爱能使人喑哑——一种语言歌呼之死亡。“爱与死为邻”。</p>
<p>然抽象的爱,亦可使人超生。爱国也需要生命,生命力充溢者方能爱国。至如阉寺性的人,实无所爱,对国家,貌作热诚,对事,
马马虎虎,对人,毫无情感,对理想,异常吓怕。也娶妻生子,治学问教书,做官开会,然而精神状态上始终是个阉人。与阉人说此,当然无从了解。</p>
</div>
</body>
<style>
body{
background-color: #f5f5f5;
}
.box{
width: 234px;
height: 300px;
background-color: #fff;
margin: 0 auto;
text-align: center;
}
.pic{
width: 160px;
}
.product{
font-size: 14px;
height: 25px;
}
.info{
font-size: 12px;
color:#cccccc;
height:30px;
}
.price{
font-size: 14px;
color: #ffa500;
}
</style>
<body>
<div class="box">
<img src="../images/smallcar.jpg" class="pic">
<div class="product">大号平衡车</div>
<div class="info">成年人的玩具</div>
<div class="price">1999元</div>
</div>
</body>