CSS ~ 从入门到入坑。
CSS ~ 从入门到入坑。
文章目录
- CSS ~ 从入门到入坑。
- what。
- css 三种实现方式。
- 选择器。
- id 选择器 > class 选择器 > 标签选择器。
- 标签选择器。
- 类选择器。
- id 选择器。
- 层次选择器。
- 后代选择器。
- 子选择器。
- 相邻兄弟选择器。
- 通用选择器。
- 结构伪类选择器。
- 属性选择器。
- 字体风格。
- 文本样式。
- 文本阴影 & 超链接伪类。
- 超链接伪类。
- 列表。
- 背景。
- 渐变。
- 盒子模型。
- 圆角边框。
- 阴影。
- 浮动。
what。
CSS 指层叠样式表(Cascading Style Sheets)。
样式定义如何显示 HTML 元素。
样式通常存储在样式表中。
把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题。
外部样式表可以极大提高工作效率。
外部样式表通常存储在 CSS 文件中。
多个样式定义可层叠为一。
css 优势。
- 内容和表现分离。
- 页面结构表现统一,可以实现复用。
- 样式十分丰富。
- 建议使用独立于 html 的 css 文件。
- 利用 SEO,容易被搜索引擎收录。
css 三种实现方式。
- css 外部样式导入两种方式。
<!-- 外部样式。--><!-- 链接式。--><link rel="stylesheet" href="css/style.css">
css 2.1 特有。
<!-- 导入式。--><style>@import "css/style.css";</style>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!-- 内部样式。--><!--<style>--><!--h1 {--><!--color: green;--><!--}--><!--</style>--><!-- 外部样式。--><!-- 链接式。--><link rel="stylesheet" href="css/style.css"><!-- 导入式。--><style>@import "css/style.css";</style>
</head>
<body><!-- 优先级。就近原则。
--><!-- 行内样式。在标签元素中,编写一个 style 属性,编写样式即可。-->
<!--<h1 style="color: red;">我是标题</h1>-->
<h1>我是标题</h1></body>
</html>
选择器。
id 选择器 > class 选择器 > 标签选择器。
标签选择器。
类选择器。
id 选择器。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- 标签选择器。-->*/h1 {color: red;}/* 类选择器。`.class名称{}`可以多个标签归类。可以复用。*/.geek {color: green;}/* id 选择器。id 必须唯一。`#id名称{}`*/</style></head>
<body><h1 class="geek">标题1</h1>
<h1 class="li">标题2</h1>
<h1>标题3</h1><p class="geek">p 标签</p><h1 id="geek" class="geek">标题1</h1>
<h1 class="geek">标题2</h1>
<h1 class="geek">标题3</h1></body>
</html>
层次选择器。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*p {*//*background-color: green;*//*}*//*!* 后代选择器。*!*//*body p {*//*background-color: red;*//*}*//*!* 子选择器。(一代,儿子)。*!*//*body > p {*//*background-color: lawngreen;*//*}*//* 相邻兄弟选择器。只有一个(向下)。(p2)*//*.active - p {*//*background-color: brown;*//*}*//* 通用选择器。*/.active ~ p {background-color: lawngreen;}</style>
</head>
<body><p>p0</p>
<p class="active">p1</p>
<p>p2</p>
<p>p3</p><ul><li><p>p4</p></li><li><p>p5</p></li><li><p>p6</p></li>
</ul><p class="active">p7</p>
<p>p8</p></body>
</html>
后代选择器。
/* 后代选择器。*/body p {background-color: red;}
子选择器。
/* 子选择器。(一代,儿子)。*/body > p {background-color: lawngreen;}
相邻兄弟选择器。
/* 相邻兄弟选择器。只有一个(向下)。(p2)*/.active - p {background-color: brown;}
通用选择器。
/* 通用选择器。*/.active ~ p {background-color: lawngreen;}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>p {background-color: green;}/* 后代选择器。*/body p {background-color: red;}/* 子选择器。(一代,儿子)。*/body > p {background-color: lawngreen;}/* 相邻兄弟选择器。只有一个(向下)。(p2)*/.active - p {background-color: brown;}/* 通用选择器。*/.active ~ p {background-color: lawngreen;}</style>
</head>
<body><p>p0</p>
<p class="active">p1</p>
<p>p2</p>
<p>p3</p><ul><li><p>p4</p></li><li><p>p5</p></li><li><p>p6</p></li>
</ul><p class="active">p7</p>
<p>p8</p></body>
</html>
结构伪类选择器。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!-- 避免使用 .class, id 选择器。--><style>/*<!-- ul 的第一个子元素。-->*/ul li:first-child {background-color: lawngreen;}/*<!-- ul 的最后一个子元素。-->*/ul li:last-child {background: red;}/*<!-- 选中 p1。按类型。选中当前 p 元素的父级元素,选中父级元素的第一个子元素,并且是当前元素才生效。-->*/p:nth-child(2) {background: deepskyblue;}/* 父元素中第二个类型为 p 的元素。按顺序。*/p:nth-of-type(2) {background: yellow;}</style>
</head>
<body><p>p1</p>
<p>p2</p>
<p>p3</p><ul><li>li1</li><li>li2</li><li>li3</li>
</ul></body>
</html>
属性选择器。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.demo a {float: left;display: block;height: 50px;width: 50px;border-radius: 10px;background: deepskyblue;text-align: center;color: #000;text-decoration: none;margin-right: 5px;font: bold 20px/50px Arial;}/* 存在 id 属性的元素。*/a[id] {background: yellow;}a[id=first] {background: red;}/* class 中有 links 的元素。= 绝对等于。*= 通配。*/a[class*='links'] {background: green;}/* 选中 href 中以 http 开头的元素。*/a[href^=http] {background: yellow;}/* 选中 href 中以 pdf 结尾的元素。*/a[href$=pdf] {background: yellow;}</style></head>
<body><p class="demo"><a href="http://www.baidu.com" class="links item first" id="first">1</a><a href="" class="links item active" target="_blank" title="test">2</a><a href="images/123.html" class="links item">3</a><a href="images/123.png" class="links item">4</a><a href="images/123.jpg" class="links item">5</a><a href="abc" class="links item">6</a><a href="/a.pdf" class="links item">7</a><a href="/abc.pdf" class="links item">8</a><a href="abc.abc" class="links item">9</a><a href="abcd.doc" class="links item last">10</a></p></body>
</html>
字体样式。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>body {font-family: "Arial Narrow", 楷体;}h1 {font-size: 50px;}.p1 {font-weight: bold;}.p3 {background: deepskyblue;height: 300px;line-height: 300px}</style></head>
<body><h1>标题</h1><p class="p1">字体</p>
<p class="p3">大小</p>
<p>English</p></body>
</html>
字体风格。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!-- 字体风格。--><style>p {font: oblique lighter 16px 楷体;}</style>
</head>
<body><p>字体风格。
</p></body>
</html>
文本样式。
颜色:color rgb rgba。
文本对齐:text-align=center
首行缩进:text-indent: 2em;
行高:line-height
装饰:text-decoration: none;(超链接去下划线)。
文本图片水平对齐:vertical-align: middle;。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- 颜色:单词RGB:0 ~ FRGBA:A 0 ~ 1-->*/h1 {color: rgba(0, 255, 255, 0.9);text-align: right;}.p1 {text-indent: 2em;}/* text-align。排版,居中。text-indent: 2em; 段落首行缩进。*/.p3 {background: deepskyblue;height: 300px;line-height: 300px}.l1 {text-decoration: underline;}.l2 {text-decoration: line-through;}.l3 {text-decoration: overline;}</style></head>
<body><h1>标题</h1><p class="l1">123456</p>
<p class="l2">123456</p>
<p class="l3">123456</p><p class="p1">字体</p>
<p>大小</p>
<p>English</p></body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- 水平对齐 ~ 参照物。-->*/img, span {vertical-align: middle;}</style></head>
<body><p><img src="images/a.jpg" alt=""><span>abcdefg</span>
</p></body>
</html>
文本阴影 & 超链接伪类。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- 默认的颜色。-->*/a {text-decoration: none;color: #000;}/* 鼠标悬浮的颜色。*/a:hover {color: orange;font-size: 50px;}/* 鼠标按住未释放。*/a:active {color: green;}a:visited {color: pink;}#price {text-shadow: 10px 10px 10px deepskyblue;}</style>
</head>
<body><a href="#"><img src="images/a.jpg" alt="" width="80" height="103">
</a>
<p><a href="#">《码出高效:Java开发手册》</a>
</p>
<p><a href="">杨冠宝,花名孤尽</a>
</p>
<p id="price">¥99
</p>
</body>
</html>
超链接伪类。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- 默认的颜色。-->*/a {text-decoration: none;color: #000;}/* 鼠标悬浮的颜色。*/a:hover {color: orange;font-size: 50px;}/* 鼠标按住未释放。*/a:active {color: green;}a:visited {color: pink;}#price {text-shadow: 10px 10px 10px deepskyblue;}</style>
</head>
<body><a href="#"><img src="images/a.jpg" alt="" width="80" height="103">
</a>
<p><a href="#">《码出高效:Java开发手册》</a>
</p>
<p><a href="">杨冠宝,花名孤尽</a>
</p>
<p id="price">¥99
</p>
</body>
</html>
列表。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="css/style.css">
</head>
<body><div id="nav"><h2 class="title">全部商品分类</h2><ul><li><a href="#">女装</a> <a href="#">男装</a> <a href="#">内衣</a></li><li><a href="#">鞋靴</a> <a href="#">箱包</a> <a href="#">配件</a></li><li><a href="#">童装玩具</a> <a href="#">孕产</a> <a href="#">用品</a></li><li><a href="#">家电</a> <a href="#">数码</a> <a href="#">手机</a></li><li><a href="#">美妆</a> <a href="#">洗护</a> <a href="#">保健品</a></li><li><a href="#">珠宝</a> <a href="#">眼镜</a> <a href="#">手表</a></li><li><a href="#">运动</a> <a href="#">户外</a> <a href="#">乐器</a></li><li><a href="#">游戏</a> <a href="#">动漫</a> <a href="#">影视</a></li><li><a href="#">美食</a> <a href="#">生鲜</a> <a href="#">零食</a></li><li><a href="#">鲜花</a> <a href="#">宠物</a> <a href="#">农贸</a></li><li><a href="#">面料集采</a> <a href="#">装修</a> <a href="#"></a></li><li><a href="#">家具</a> <a href="#">家饰</a> <a href="#">家纺</a></li><li><a href="#">汽车</a> <a href="#">二手车</a> <a href="#">用品</a></li><li><a href="#">办公</a> <a href="#">DIY</a> <a href="#">五金电子</a></li><li><a href="#">百货</a> <a href="#">餐厨</a> <a href="#">家庭保障</a></li><li><a href="#">学习</a> <a href="#">卡券</a> <a href="#">本地服务</a></li></ul>
</div></body>
</html>
#nav {width: 300px;background: grey;
}.title {font-size: 18px;font-weight: bold;text-indent: 1em;line-height: 35px;background: red url("../images/down.png") 270px 10px no-repeat;
}/* ul li*/
ul {background: grey;
}ul li {height: 30px;list-style: none;text-indent: 1em;background-image: url("../images/down.png");background-repeat: no-repeat;background-position: 236px 2px;
}a {text-decoration: none;font-size: 13px;color: black;
}a:hover {color: orange;text-decoration: underline;
}
背景。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div {width: 1000px;height: 700px;border: 1px solid red;background-image: url("images/a.jpg");/* 默认全部平铺。*/}.div1 {background-repeat: repeat-x;}.div2 {background-repeat: repeat-y;}.div3 {background-repeat: no-repeat;}</style></head>
<body><div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div></body>
</html>
渐变。
https://www.grabient.com/
background-color: #FFFFFF;
background-image: linear-gradient(180deg, #FFFFFF 0%, #6284FF 50%, #FF0000 100%);
盒子模型。
body 标签默认有外边距。
-
margin。
n. 页边空白;白边;(获胜者在时间或票数上领先的)幅度,差额,差数;余地;备用的时间(或空间、金钱等) -
padding。
n. 衬料;衬垫;赘语;废话;凑篇幅的文字
v. (用软材料)填充,覆盖,保护;蹑手蹑脚地走;虚报(账目);做黑账;pad 的现在分词 -
border。
n. 国界;边界;边疆;边界地区;镶边;包边;(草坪边等的)狭长花坛
v. 和…毗邻;与…接壤;沿…的边;环绕…;给…镶边
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>/*<!-- body 有一个默认外边距 margin: 0。-->*/h1, ul, li, a, body {margin: 0;padding: 0;text-decoration: none;}h2 {font-size: 16px;background-color: deepskyblue;line-height: 30px;margin: 0;color: white;}#box {width: 300px;border: 1px solid red;}/* 标签选择器。*/form {background: forestgreen;}div:nth-of-type(1) input {border: 3px solid black;}div:nth-of-type(2) input {border: 3px dashed black;}div:nth-of-type(3) input {border: 3px solid black;}</style></head>
<body><div id="box"><h2>会员登录</h2><form action="#"><div><span>用户名:</span><input type="text"></div><div><span>密 码:</span><input type="text"></div><div><span>邮 箱:</span><input type="text"></div></form>
</div></body>
</html>
- 外边距。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>#box {width: 300px;border: 1px solid red;margin: 0 auto;/* 居中对齐。*//* 顺时针。*/}/* 标签选择器。*/form {background: forestgreen;}/* 外边距。*/input {border: 1px solid black;}</style></head>
<body><div id="box"><h2>会员登录</h2><form action="#"><div><span>用户名:</span><input type="text"></div><div><span>密 码:</span><input type="text"></div><div><span>邮 箱:</span><input type="text"></div></form>
</div></body>
</html>
圆角边框。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div {width: 100px;height: 100px;border: 10px solid red;border-radius: 50px 20px; /* 左上 右下。(主次对角线)*/}</style></head>
<body><div></div></body>
</html>
阴影。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div {width: 100px;height: 100px;border: 10px solid red;box-shadow: 10px 10px 100px yellow;}</style></head>
<body><div></div></body>
</html>
浮动。
- 块级元素。
h1~h6 p div 列表。
- 行内元素。
span a img strong
行内元素可以被包含在块级元素中,反之,则不可以。