案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background-color: #f5f5f5;
font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
}
.item {
width: 230px;
height: 322px;
padding: 30px 20px;
background-color: #fff;
box-sizing: border-box;
}
a {
color: #333;
text-decoration: none;
font-size: 14px;
color: #666;
}
.item .album {
text-align: center;
}
.item .album img {
width: 150px;
height: 150px;
}
.item .desc p {
line-height: 24px;
margin-top: 25px;
/* 一行显示...方法 */
/* overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; */
/* 多行省略显示,p元素内文字如果无法正常显示,需要设置父元素宽度*/
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.item .desc .price {
color: #e1251b;
}
.item .desc .price .symbol,
.item .desc .price .float {
font-size: 12px;
}
.item .desc .price .integer {
font-size: 20px;
font-weight: 700;
}
</style>
</head>
<body>
<div class="item">
<a href="#">
<div class="album">
<!-- referrerpolicy属性用来解决网络图片无法显示问题 -->
<img
src="https://img12.360buyimg.com/jdcms/s150x150_jfs/t1/129042/8/23901/164867/62451158E5a292e4c/5b754fa08ceea9c8.jpg.webp"
alt="" referrerpolicy="no-referrer">
</div>
<div class="desc">
<p>美的(Midea)空气炸锅大容量家用多功能电炸锅智能定时无油低脂煎炸锅温控炸鸡薯机条空气烤箱 EDB(4.5升)一年只换不修2022年2月上新</p>
<div class="price">
<span class="symbol">¥</span>
<span class="integer">399.</span><span class="float">00</span>
</div>
</div>
</a>
</div>
</body>
</html>
实现效果:
背景设置
background-image用于设置元素的背景图片
- 会盖在(不是覆盖)background-color的上面
如果设置了多张图片
- 设置的第一张图片将显示在最上面,其他图片按顺序层叠在下面
注意:如果设置了背景图片后,元素没有具体的宽高,背景图片是不会显示出来的
background-repeat用于设置背景图片是否要平铺
常见的设值有
- repeat:平铺
- no-repeat:不平铺
- repeat-x:只在水平方向平铺
- repeat-y:只在垂直平方向平铺
<style>
.box {
width: 500px;
height: 500px;
background-color: #f00;
background-image: url(./imgs/kobe01.jpg), url(./imgs/kobe02.png);
background-repeat: no-repeat;
}
</style>
<body>
<div class="box"></div>
</body>
background-size用于设置背景图片的大小
- auto:默认值, 以背景图本身大小显示
- cover:缩放背景图,以完全覆盖铺满元素,可能背景图片部分看不见
- contain:缩放背景图,宽度或者高度铺满元素,但是图片保持宽高比
- <percentage>:百分比,相对于背景区(background positioning area)
- length:具体的大小,比如100px
background-position用于设置背景图片在水平、垂直方向上的具体位置
主要用于图片主体定位
- 可以设置具体的数值 比如 20px 30px;
- 水平方向还可以设值:left、center、right
- 垂直方向还可以设值:top、center、bottom
- 如果只设置了1个方向,另一个方向默认是center
background-attachment
决定背景图像的位置是在
视口
内固定,或者随着包含它的区块滚动。
可以设置以下3个值
- scroll:此关键属性值表示背景相对于元素本身固定, 而不是随着它的内容滚动
- local:此关键属性值表示背景相对于元素的内容固定。如果一个元素拥有滚动机制,背景将会随着元素的内容滚动.
- fixed:此关键属性值表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。
img,作为网页内容的重要组成部分,比如广告图片、LOGO图片、文章配图、产品图片
background-image,可有可无。有,能让网页更加美观。无,也不影响用户获取完整的网页内容信息
emmet语法
Emmet (
前身为
Zen Coding)
是一个能大幅度
提高前端开发效率
的一个工具
.
- 在前端开发的过程中,一大部分的工作是写 HTML、CSS 代码, 如果手动来编写效果会非常低.
- VsCode内置了Emmet语法,在后缀为.html/.css中输入缩写后按Tab/Enter键即会自动生成相应代码
!和html:5可以快速生成完整结构的html5代码
>(子代)和+(兄弟)
- div>ul>li
- div+div>p>span+i
- div+p+ul>li
y
*(多个)和^(上一级)
- ul>li*5
- div+div>p>span^h1
- div+div>p>span^^^^h1
coderwhy
()(分组)
- div>(header>ul>li*2>a)+footer>p
属性(id属性、class属性、普通属性) {}(内容)
- div#header+div#main>.container>a[href]
- a[href="http://www.baidu.com"]{百度一下}
$(数字)
- ul>li.item$*5
隐式标签
CSS Emmet
结构伪类
:nth-child
:nth-child(1)
- 是父元素中的第1个子元素
:nth-child(2n)
- n代表任意正整数和0
- 是父元素中的第偶数个子元素(第2、4、6、8......个) 跟:nth-child(even)同义
:nth-child(2n + 1)
- n代表任意正整数和0
- 是父元素中的第奇数个子元素(第1、3、5、7......个) 跟:nth-child(odd)同义
nth-child(-n + 2)
- 代表前2个子元素
:nth-last-child( )
:nth-last-child()的语法跟:nth-child()类似,不同点是:nth-last-child()从最后一个子元素开始往前计数
- :nth-last-child(1),代表倒数第一个子元素
- :nth-last-child(-n + 2),代表最后2个子元素
:
nth-of-type()用法跟:nth-child()类似
- 不同点是:nth-of-type()计数时只计算同种类型的元素
:nth-last-of-type()用法跟:nth-of-type()类似
- 不同点是:nth-last-of-type()从最后一个这种类型的子元素开始往前计数
否定伪类(negation pseudo-class)
:not()的格式是:not(x)
- x是一个简单选择器
- 元素选择器、通用选择器、属性选择器、类选择器、id选择器、伪类(除否定伪类)
:not(x)表示
除x以外的元素
其他常见的伪类(了解):
- :first-child,等同于:nth-child(1)
- :last-child,等同于:nth-last-child(1)
- :first-of-type,等同于:nth-of-type(1)
- :last-of-type,等同于:nth-last-of-type(1)
- :only-child,是父元素中唯一的子元素
- :only-of-type,是父元素中唯一的这种类型的子元素
下面的伪类偶尔会使用:
- :root,根元素,就是HTML元素
- :empty代表里面完全空白的元素
表单
input元素的使用
- type:input的类型
- text:文本输入框(明文输入)
- password:文本输入框(密文输入)
- radio:单选框
- checkbox:复选框
- button:按钮
- reset:重置
- submit:提交表单数据给服务器
- file:文件上传
- readonly:只读
- disabled:禁用
- checked:默认被选中 ,只有当type为radio或checkbox时可用
- autofocus:当页面加载时,自动聚焦
- name:名字 ,在提交数据给服务器时,可用于区分数据类型
- value:取值
type类型的其他取值和input的其他属性, 查看文档:
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input
表单可以实现按钮效果:
- 普通按钮(type=button):使用value属性设置按钮文字
- 重置按钮(type=reset):重置它所属form的所有表单元素(包括input、textarea、select)
- 提交按钮(type=submit):提交它所属form的表单数据给服务器(包括input、textarea、select)
label元素一般跟input配合使用,用来表示input的标题
labe可以跟
某个input绑定,点击label
就可以
激活对应的input
变成选中
radio的使用
我们可以将type类型设置为radio变成单选框,name值相同的radio才具备单选功能
checkbox的使用
我们可以将type类型设置为checkbox变成多选框:
属于同一种类型的checkbox,name值要保持一致
textarea的使用
textarea的常用属性:
- cols:列数
- rows:行数
缩放的CSS设置
- 禁止缩放:resize: none;
- 水平缩放:resize: horizontal;
- 垂直缩放:resize: vertical;
- 水平垂直缩放:resize: both;
select和option的使用
option是select的子元素,一个option代表一个选项
select常用属性
- multiple:可以多选
- size:显示多少项
option常用属性
- selected:默认被选中
form常见的属性
form通常作为表单元素的父元素:
- form可以将整个表单作为一个整体来进行操作;
- 比如对整个表单进行重置;
- 比如对整个表单的数据进行提交;
form常见的属性如下:
action
- 用于提交表单数据的请求URL
method
- 请求方法(get和post),默认是get
target
- 在什么地方打开URL(参考a元素的target)