目录
CSS
- CSS(Cascading Style Sheet,层叠样式表);
- 层叠样式:对同一个标签应用不同的样式,所有样式会叠加在一起展示出效果;
- 优点:把 HTML 内容和 CSS 样式分离,降低了耦合度,提高了样式复用性,而且还可以提供更强大的美化效果。
1. 引入方式
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>引入方式</title>
<!-- 告诉浏览器把解析器切换CSS解析器,type="text/css"可以省略 -->
<style type="text/css">h2{
color: green; /*字体颜色:绿色*/
}</style>
<!-- link的href属性指明样式文件的地址;
rel属性指明外部文件是当前页面的stylesheet样式表 -->
<link href="../css/外部样式.css" rel="stylesheet"/>
</head>
<body>
<!-- CSS的引入方式有三种:
1.行内,在标签的style属性中写样式,作用域:该标签;
2.内部(内嵌),在页面中的style标签中写样式,style标签位置理论上任意,推荐放置在head中的底部,作用域:本页面;
3.外部,使用link标签引入外部样式,作用域:所有引入的页面 -->
<h1 style="color:red;">1.行内</h1>
<h2>2.内部(内嵌)</h2>
<h3>3.外部 </h3>
</body>
</html>
- 效果图:
2. 基本语法
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>语法</title>
</head>
<body>
<!-- CSS语法:选择器{CSS样式},选择器:匹配标签;
CSS样式:标签要显示的外观效果,格式:{样式名:样式值;样式名:样式值;},样式名多个单词用短杠-分割,样式值多个单词用空格分割;
CSS注释:/*CSS注释*/ -->
<style> font {
color: green; /*字体绿色*/
font-size: 20px; /*字体大小*/
line-height: 40px; /*行高*/
font-weight: bold; /*加粗*/
font-style: italic; /*倾斜*/
} </style>
<font>床前明月光</font><br/>
<font>疑是地上霜</font><br/>
<font>举头望明月</font><br/>
<font>低头思故乡</font><br/>
</body>
</html>
- 效果图:
a. 基本选择器
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>基本选择器</title>
</head>
<body>
<!-- CSS基本选择器:
1.标签 :根据标签匹配元素,格式:标签{} ;
2.类:根据class的值匹配元素,class属性是给标签归类添加样式,格式:.class{};
3.ID:根据id值匹配元素,id属性是标签的唯一标志,#id{} -->
<!-- 渲染需求:
1.所有span标签中的文字为楷体;
2.所有女性(class="female")的文字为红色;
3.所有英雄(class="hero")的文字大小为50px;
4.Java(id="main")的字体大小为100px -->
<style>span { /*所有的span标签*/
font-family: "楷体"; /*楷体*/
}
.female { /*所有class值中有female的标签*/
color: red; /*字体红色*/
}
.hero { /*所有class值中有hero的标签*/
font-size: 50px; /*字体大小*/
}
#main { /*匹配id=main的一个标签*/
font-size: 100px; /*字体大小*/
}</style>
<span class="female">小红</span><span class="female">小美</span><span class="female">小娜</span><span class="female">小丽</span>
<!-- .female + .hero -->
<span class="female hero">小杰</span>
<!-- span + .hero -->
<span class="male hero">小王</span><span class="male hero">小黄</span>
<span class="hero">小刚</span>
<!-- #main -->
<span id="main">Java</span>
<!-- span -->
<span id="east">JavaScript</span>
</body>
</html>
- 效果图:
b. 扩展选择器
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>扩展选择器</title>
</head>
<body>
<!-- 扩展选择器,
E,F:并列关系;
属性 E[attribute=value] -->
<style type="text/css"> span, p, label { /*并列关系*/
font-family: "楷体"; /*字体类型*/
}
div span { /*div所有的后代span标签*/
color: red; /*字体红色*/
}
input[type="text"] { /* 有type属性值等于text的input标签*/
background-color: gold; /*背景颜色 金色*/
} </style>
<!-- div span -->
<div><span>地址</span>
<p><span id="gbl">爱好</span></p>
</div>
<!-- span -->
<span id="cld">性别</span><br/>
<!-- input -->
<label>姓名</label><input type="text" name="userName" value="Jack"/><br/>
<label>密码</label><input type="password" name="userPass" value="123456"/><br/>
</body>
</html>
- 效果图:
c. 盒子模型理论
- 前端万物皆盒子;
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>盒子模型理论</title>
</head>
<body>
<!-- 盒子模型的组成:
margin(外)边距:边框之外的距离,默认透明,可以设置:上、右、下、左的大小;
border边框:可以设置边框的上、右、下、左的大小,类型、颜色;
padding(内)填充:边框和内容之间的距离,默认透明,可以设置上、右、下、左的大小;
设置宽高width和height两种方式:
box-sizing:content-box;设置的是content所占的宽度和高度;
box-sizing:border-box;设置的是border所占的宽度和高度 ;
content内容:是标签中内容放置区域;-->
<style> div {
border: 10px solid red; /*边框 10px 实线 红色*/
margin: 40px; /*边距 40px*/
padding: 30px; /*填充 30px*/
width: 300px; /*宽度*/
height: 100px; /*高度*/
box-sizing: content-box; /*默认:content所占的宽度和高度*/
box-sizing: border-box; /*默认:border所占的宽度和高度*/
} </style>
<div>我是content内容1</div>
<div>我是content内容2</div>
<div>我是content内容3</div>
</body>
</html>
- 效果图 + F12:
3. 常用样式
a. 边距边框
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>边框边距</title>
</head>
<body>
<!-- 边框border:可以设置宽度,类型,颜色;
边距margin: 左右外边距可以取值,auto为自动居中对齐;
边框圆角border-radius:可以设置四个角(左上,右上,右下,左下)边框从多少像素开始圆滑,一般设置一个值全部应用 -->
<style> div {
border: 10px solid red; /*边框 10px 实线 红色*/
box-sizing: border-box; /*边框作为盒子大小*/
width: 200px; /*宽度200px*/
height: 200px; /*高度200px*/
margin: 10px auto; /*外边距上下10px 左右自动居中*/
border-radius: 100px; /*边框圆角*/
}</style>
<div>1</div>
</body>
</html>
- 效果图:
b. 字体文本
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>字体文本</title>
<style type="text/css"> div p {
color: green; /*字体绿色*/
font-size: 20px; /*字体大小*/
line-height: 40px; /*行高*/
font-weight: bold; /*加粗*/
font-family: '楷体'; /*字体类型楷体*/
}
div p span {
font-style: italic; /*倾斜*/
text-decoration: underline; /*文本装饰 下划线*/
} </style>
</head>
<body>
<div><p><span>学习必经三种境界:</span><br/>
第一境界“昨夜西风凋碧树。独上高楼,望尽天涯路。”<br/>
第二境界“衣带渐宽终不悔,为伊消得人憔悴。”<br/>
第三境界“众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。”<br/></p></div>
</body>
</html>
- 效果图:
i. 博客简介
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>博客简介</title>
</head>
<body>
<style> h1 {
text-align: center; /*文字水平居中*/
}
.redColor {
color: red; /*红色字体*/
}
.boldItalic {
font-weight: bold; /*字体重量加粗*/
font-style: italic; /*字体样式倾斜*/
}
p {
text-indent: 2em; /*首行缩进两个字符*/
}
.graySize {
text-align: center; /*文字水平居中*/
color: gray; /*灰色字体*/
font-size: 12px; /*字体大小12px 默认不写是16px*/
text-indent: 0em; /*首行不缩进*/
} </style>
<h1>博客简介</h1>
<hr color="orange"/>
<p><span class="redColor">“Regino的博客”</span>是Regino在<span class="boldItalic">CSDN</span>平台上的个人博客。域名为:https://blog.csdn.net/Regino,自定义域名为:qwert.blog.csdn.net。欢迎来访。</p>
<p>个人箴言:</p>
<p>区区二十几岁,人言后生,本应是前途坦荡之年纪,然而资质平平,见识短浅,可造之材本已难当,唯求可独立支持,笃定心之所寄,不负亲友所托,是为所愿。</p>
<p>积土成山而兴风雨,积善成德始备圣心。古人以流水计时,时间流逝,亦是水流积累沉淀。光阴可惜,譬诸流水一去不返。岁月更改,于洗刷幼稚之时亦教导人哲思。</p>
<p>过往实难更改,因果轮回或是注定,然当下尚未写就,未来仍未来临。把握、珍惜,是为能善其身之不二法门,与诸君共勉。</p>
<hr color="orange"/>
<p class="graySize">版权声明:本文为CSDN博主「Regino」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。<br/>
原文链接:https://qwert.blog.csdn.net/article/details/105321548</p>
</body>
</html>
- 效果图:
c. 背景属性
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>背景属性</title>
<style type="text/css"> div {
border: 1px solid lightgray; /*边框 1px 实线 浅灰色*/
box-sizing: border-box; /*边框作为盒子大小*/
width: 1000px; /*宽度*/
height: 250px; /*高度*/
margin: 0px auto; /*外边距 上下0px 左右自动居中*/
}
#d1 {
background-color: #024bd5; /*背景颜色*/
}
#d2 {
background-image: url("./img/博客右栏.png"); /*背景图片地址*/
background-repeat: no-repeat; /*背景图片不平铺*/
background-position: top 0px right 0px; /*背景图片位置 右上角*/
background-size: auto 250px; /* 设置背景图片宽度和高度。第一个值设置宽度,第 二个值设置的高度。如果只给出一个值,第二个是设置为"atuo(自动)"*/
} </style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
- 效果图:
d. 显示属性
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>显示属性</title>
<style> span, div {
border: 1px solid lightgray;
width: 500px;
height: 100px;
} </style>
</head>
<body>
<!-- 显示属性display标签的显示方式,常用取值:
inline显示为内联标签,内联标签设置宽高不起作用,因为它的宽高是由内容撑起来的;
block显示为块级标签,可设置width和height;
none隐藏不显示 -->
<span>内联标签1</span><span style="display:inline;">内联标签2</span><span style="display:block;">内联标签3</span>
<div>块级标签1</div>
<div style="display:block;">块级标签2</div>
<div style="display:none;">块级标签3</div>
</body>
</html>
- 效果图:
4. 综合应用:注册表单
- 根据提供的 HTML 和 CSS 素材编写 table 和表单标签完成注册表单案例;
a. 素材 1: HTML
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>注册表单</title>
<link href="../css/register.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<div class="child center"></div>
</div>
</body>
</html>
b. 素材 2: CSS
body {
background-color: beige; /*背景颜色*/
}
.container {
box-sizing: content-box; /*默认的 content 作为盒子大小*/
width: 800px; /*宽度*/
height: 500px; /*高度*/
border: 10px ridge lightgray; /*边框 10px 桥梁 浅灰色*/
margin: 50px auto; /*外边距 上下50px 左右自动居中*/
background-color: white; /*背景颜色*/
}
.child {
border: 1px solid red; /*边框 1px 实线 红色*/
box-sizing: border-box; /*边框作为盒子大小*/
height: 500px; /*高度*/
border-color: rgba(0, 0, 0, 0); /*边框颜色 完全透明*/
}
.center {
margin: 0px auto; /*外边距 上下0px 左右自动居中*/
width: 400px; /*宽度*/
font-family: '楷体'; /*字体类型*/
color: gray; /*字体颜色*/
}
.center table tr {
height: 50px; /*高度*/
}
input[type="text"], input[type="password"], input[type="date"] {
border: 1px solid lightgray; /*边框 1px 实线 浅灰色*/
width: 180px; /*宽度*/
height: 30px; /*高度*/
border-radius: 15px; /*边框圆角*/
padding: 5px; /*填充*/
box-sizing: border-box; /*边框作为盒子大小*/
}
input[name="userCode"] {
width: 60px; /*宽度*/
}
input[name="userCode"] + img {
vertical-align: top; /*垂直对齐方式 上对齐*/
}
.btn {
width: 100px; /*宽度*/
line-height: 30px; /*行高*/
background-color: gold; /*背景金色*/
color: white; /*字体白色*/
border: 1px solid gold; /*边框 1px 实线 金色*/
border-radius: 5px; /*边框圆角*/
}
input:focus { /*输入框获取焦点时*/
outline: none; /*获取焦点时不显示轮廓*/
border: 1px solid lightskyblue; /*边框 1px 实线 浅天蓝色*/
}
c. 具体实现:注册表单
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>注册表单</title>
<!-- 引入css样式文件 -->
<link href="../css/register.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<div class="child center">
<form action="#" method="post">
<table border="0" align="center">
<tr>
<td>用户名</td>
<td><input type="text" name="userName" placeholder="请输入账号"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="userPass" placeholder="请输入密 码"></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="userMail" placeholder="请输入邮箱"></td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="userName" placeholder="请输入姓名"></td>
</tr>
<tr>
<td>手机号</td>
<td><input type="text" name="userPhone" placeholder="请输入手机号"></td>
</tr>
<tr>
<td>性别</td>
<td><input type="radio" id="male"><label for="male">男</label> 
<input type="radio" id="female"><label for="female">女</label> </td>
</tr>
<tr>
<td>生日</td>
<td><input type="date" name="userBirth"></td>
</tr>
<tr>
<td>验证码</td>
<td><input type="text" name="userCode" placeholder="验证码">
<img width="90px"
title="标题"
src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1586044277242&di=d742a7bf56fd8d991e776bd092467589&imgtype=0&src=http%3A%2F%2Fdl2.iteye.com%2Fupload%2Fattachment%2F0092%2F0152%2Fa256e0dc-35cd-389c-ad2d-12bdaba19e80.jpg"
alt="加载失败"></td>
</tr>
<tr>
<td colspan="2" align="center">
<button class="btn">用户注册</button>
</td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
- 效果图: