display:none;
height:0;
用来告诉浏览器当前网页的版本
代码位置:html页面的最顶部,在html标签外
<!DOCTYPE html> 大小写皆可
将字符转换成二进制的过程
将二进制装换成字符的过程
编码解码所遵循的规则
编码解码时所采用的字符集不同导致乱码
万国码,开发时的默认编码
<head>
<meta charset='utf-8'>
</head>
;
<hgroup>
<h1>大标题</h1>
<h2>小标题</h2>
</hgroup>
<blockquote>
长引用
</blockquote>
<q>短引用</q> // "短引用"
回到顶部
; <div style="height:1000px;background-color: antiquewhite;" id="div1">
TEST
</div>
<a href="#div1">跳转</a>
javascript:;
,此时点击超链接不会产生任何反应;
方式一
<audio src="" controls loop muted autoplay></audio>
方式二:考虑兼容问题
<audio controls>
<source src="">
<embed src="" type='audio/mp3' width='300'> // 兼容IE8
</audio>
controls:手动控制音乐播放;
loop:循环播放;
muted:静音;
autoplay:自动播放,一般没用;
<video controls>
<source src="">
<embed src="" type='vedio/ma4' width='300'>
</video>
table{
border:1px solid black;
width:50%;
/* 边框之间的距离,边框之间的距离设为0,
table和td的边框会并在一起 */
border-spacing: 0;
/* 边框合并,table和td的边框重叠,
设置此属性后border-spacing属性失效 */
border-collapse:collapse;
}
td{
border:1px solid black;
height:50px;
/* 默认情况下,td是垂直居中的
通过设置vertical-align属性调整td中内容的垂直位置 */
vertical-align:top;
text-align: center;
}
/* tr的父元素是tbody而不是table */
tbody>tr:nth-child(even){
background-color: yellowgreen;
}
.outer{
display: table-cell;
width:400px;
height:400px;
background-color: yellowgreen;
/* 让inner垂直居中 */
vertical-align: middle;
}
.inner{
width:200px;
height: 200px;
background-color: black;
/* 水平居中 */
margin:0 auto;
}
<button type="button">登录</button>
<button type="submit">提交</button>
<button type="reset">重置</button>
button和input的效果相同,但是由于input使自闭合元素,所以相对来说button操作空间更大;
<!-- 禁用:数据无法提交到后台 -->
<input type="text" name="" id="" disabled>
<!-- 只读 -->
<input type="text" name="" id="" readonly>
<!-- 自动获取焦点 -->
<input type="text" name="" id="" autofocus>
缺点:一个样式只能作用于一个元素,不可复用;如需修改,维护困难;
在head中的style标签中编写样式。
优点:可以为多个标签设置一个样式,且维护方便;
缺点:其它html页面使用当前页面的样式时不方便;
将样式编写在css文件中,然后在html中引入外部样式;
优点:多个html页面可以复用同一个css文件,方便维护;可以利用浏览器的缓存机制,加快了页面的加载速度,提高用户体验;
选中页面中的所有元素
*{
}
作用:选中同时符合多个条件的元素
格式:选择器1选择器2选择器3…选择器n{}
注意:如果有元素选择器,元素选择器一定要放到最前边
p.p1{
color:blue;
}
.a.b.c{}
格式:选择器1,选择器2,…,选择器n{}
格式:父元素 > 子元素{}
格式:祖先 后代{}
前一个 + 后一个{}
兄 ~ 弟{}
[属性名]{} 选择包含指定属性的元素
[属性名=属性值]{} 选择包含指定属性和属性值的元素
[属性名^=属性值]{} 选择属性值以指定值开头的元素
[属性名$=属性值]{} 选择属性值以指定值结尾的元素
[属性名*=属性值]{} 选择属性值包含指定值的元素
伪类:不存在的类,特殊的类,用来描述一个元素的特殊状态,比如第一个元素,被点击的元素;
伪类一般都是使用:开头;
:first-child
第一个子元素:last-child
最后一个子元素:nth-child(a)
第a个子元素,从0开始,a等于n时全选,a等于2n或者even时选择偶数位的子元素,a等于2n+1或者odd时选择奇数位子元素:first-of-type
第一个子元素:last-of-type
最后一个子元素:nth-of-type(a)
第a个子元素,从1开始,a等于n时全选,a等于2n或者even时选择偶数位的子例:
<div>
<p>123123</p>
<span>0</span>
<span>1</span>
<span>2</span>
</div>
div span:first-child{
color:brown
} //此时0的颜色不会改变
div span:first-of-type{
color:brown
} //此时0的颜色会改变
伪元素:表示页面中一些特殊的并不真实存在的元素(操作元素中的特殊位置),用::开头;
p::before{
content:"abc";
color:red
}
并不是所有的样式都会被继承,可以去w3school中查看;
color:hsl(250, 10%, 50%)
网页是一个多层结构,一层摞着一层,我们看到的是最顶层,而文档流是最底层,是网页的基础,我们创建的元素默认都是在文档流中进行排列的;对我们来说,元素主要有两种状态:在文档流中和不在文档流中;
一个盒子的可见大小由内容区、内边距、边框共同决定,计算盒子大小时需将三者加起来
border:10px red solid;
margin:0 auto;
会使元素居中是因为设置width后如果左右外边距都是auto,则两个外边距相同,那么元素自然就处于居中的位置;box-shadow:10px 10px 50px rgba(0, 0 , 0, .3);
四个参数分别是水平偏移量(正值向右偏移)、垂直偏移量(正值向下偏移)、阴影的模糊半径、阴影颜色;*{
margin:0;
padding:0;
}
.clearfix::after{
//添加空白内容
content: "";
//因为伪元素是一个行内元素,即使清除了浮动也不会独占一行,所以需要转换为一个块元素
display: block;
//清除两侧的浮动
clear: both;
}
使用clear属性来清除浮动元素对当前元素的影响;
原理:就是给当前元素添加了一个上外边距;
position:absolute;
margin:auto;
left:0;
right:0;
top:0;
bottom:0;
font-family: '楷体', Courier, monospace;
最后一个属性值monospace指的是一类字体,如果前两个都没有,则去这类字体中找一个;
可以通过font-size和color来调整字体的颜色和大小; li::before{
content:'\f1b0';
font-family: 'Font Awesome 5 Free';
font-weight: 900;
color:blue
}
.fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; }
和.fas { font-family: 'Font Awesome 5 Free'; font-weight: 900; }
是免费的,所以只用从这两种中找即可;<i class="fa"></i>
left,right,center,justify
设置文字过多省略号效果
// 设置文本不换行
white-space: nowrap;
// 设置隐藏溢出的文本
overflow: hidden;
// 显示省略符号来代表被修剪的文本
text-overflow: ellipsis;
父元素:hover 子元素{
display: block;
}
下拉框:
在这里插入代码片
body{
font: 14px/1.5 Helvetica Neue,Helvetica,Arial,Microsoft Yahei,Hiragino Sans GB,Heiti SC,WenQuanYi Micro Hei,sans-serif;
color:#333;
/* 防止body过小的时候,容器溢出 */
min-width: 1226px;
}
/* 给内容区设置宽度 */
.w{
width:1226px;
margin:0 auto;
}
ul根据其位置设置向左向右浮动,li一般都设置为向左浮动;
a{
/* 取消文本样式 */
text-decoration: none;
/* 设置字体颜色 */
color:#b0b0b0;
/* display设置为block,a会充满整个li标签 */
display: block;
}
方法一:直接使用“|”来当分割线,然后设置其字体大小,颜色即可;
结构
<li class="sep">|</li>
样式
```javascript
.sep{
/* 字体大小 */
font-size: 12px;
/* 左右外边距 */
margin:0 .3em;
/* 颜色 */
color:#424242;
}
``
方法二:直接设置li标签的宽度高度颜色;
结构
<li class="spacer"></li>
样式
.spacer{
width:1px;
height: 10px;
background-color: #ccc;
margin:11px 5px 0;
padding:0;
}
.shopcar-bar{
width:300px;
height: 100px;
/* 子绝 */
position:absolute;
/* 右边界对齐 */
right:0;
background-color: white;
display: none;
}
<li class="shopcar">
<a href="#" class=""><i class="iconfont icon-gouwuche"></i><span> 购物车(0)</span></a>
<div class="shopcar-bar"></div>
</li>
结构
<li class="load-app">
<a href="#" >下载app
<div class="QR-code">
<img src="img/download.png" alt="">
小米商城App
</div>
</a>
</li>
样式
.QR-code{
width: 124px;
height: 148px;
position:absolute;
right:-50px;
display: none;
}
.QR-code img{
width: 90px;
height: 90px;
/* 通过设置margin值让二维码居中 */
margin:17px;
margin-bottom:10px;
}
.load-app:hover .QR-code{
box-shadow: 0 2px 10px rgb(0 0 0 / 15%);
line-height: 1;
/* 让文本居中 */
text-align: center;
color:#333;
font-size: 14px;
display: block;
}
.load-app:hover a::after{
content:"";
/* 创造一个小三角 */
border:6px solid transparent;
width:0;
height:0;
border-top: none;
border-bottom-color: #fff;
/* 开启绝对定位 */
position:absolute;
/* 贴在下边沿 */
bottom:0;
/* 设置水平居中 */
left:0;
right:0;
margin:auto;
}
height:0;
只要高度发生变化,需要0.3s的时间去切换
transition:height 0.3s;
先将需要隐藏的元素高度设置为0,然后通过hover将其元素设为原值;这样不用设置display来隐藏元素,而且可以设置过渡效果;
logo放在h1标签中,在h1中加入“小米官网",有利于被搜索引擎收录;
将“小米官网"的font-size设置为0或者将text-indent设为-9999 即可隐藏文字;
结构
<h1 class="logo" title="小米官网">
小米官网
<a href="#"></a>
</h1>
样式
.header .logo a{
background: url(img/logo-mi2.png) no-repeat;
display: block;
background-size: 56px 56px;
height:56px;
}
visibility:hidden;
结构:两个箭头写在一个div中就可以
<div class="jiantou">
<a href="javascript:;" class="iconfont icon-xiangzuojiantou prev"></a>
<a href="javascript:;" class="iconfont icon-jiantou next"></a>
</div>
样式
.jiantou a{
width:41px;
/* line-height和height设置相同值,可以让a中的元素垂直居中 */
height: 69px;
line-height: 69px;
position:absolute;
/* 同时设置top,bottom,margin,width,可以让a在包含块中垂直居中 */
top:0;
bottom:0;
margin:auto;
}
分别设置两个箭头的水平位置
.prev{
left: 234px;
}
.next{
right:0;
}
**目的:**让侧边框固定在视口的某个位置,并随着视口宽度的变化而自动调整;
实现原理:left + margin-left +border-left + padding-left + width + padding-right + +border-right + margin-right + right = 视口的宽度
其中left和right在默认情况下为auto,其余属性默认值都是0;利用left和right的默认值为auto的特性,将其中一个属性(right)设为视口宽度的百分比,此时另一个属性(left)为auto,通过调整margin-right的值来调整left的值,从而将其置于固定的位置;
注意事项: left和margin-left同时调整的时候元素的位置不会改变,因为两者都是以左边界为基准,一个增加一个减少,二者会抵消;
/* 设置回到顶部的元素 */
.back-top{
width: 26px;
height: 206px;
background-color: orange;
/* 开启固定定位 */
position: fixed;
bottom: 60px;
right: 50%; /*将right值设置为视口宽度的50%*/
margin-right: -639px;
/*
布局的等式
left + margin-left + width + margin-right + right = 视口的宽度
auto + 0 + 26 + 0 + 60 = 视口宽度
auto + 0 + 26 + -639px + 50% = 视口宽度
*/
}
ul{
list-style: none;
margin:0;
padding:0;
padding-top:2px;
padding-left: 6px;
// 开启bfc,防止父子元素外边距重叠
overflow: hidden;
}
ul li{
float:left;
// 子绝父相,伪元素也是li的子元素
position: relative;
}
ul li::after{
content:"";
height:1px;
width:67px;
background-color: red;
position:absolute;
// 设置水平居中
left:0;
right:0;
margin:0 auto;
top:0;
}
ul li::before{
content:"";
height:60px;
width:1px;
background-color: red;
position:absolute;
// 设置垂直居中
left:0;
top:0;
bottom:0;
margin:auto 0;
}
https://www.mi.com/favicon.ico
目的:缩小代码体积,增快访问速度,提高用户体验;
原理:去除文件中的注释、空格、换行;
transition:margin-left 2s 2s;
div{
/* width是每个动作的宽度 */
width:136px;
height:180px;
margin:0 auto;
border:1px solid red;
background-image: url(img/2.jfif);
/* steps()中的值是图片中动作的数量 */
animation: test 1s steps(4) infinite;
}
@keyframes test{
from{
background-position:0 0;
}
to{
/* 水平偏移量是图片宽度的相反数 */
background-position:-487px 0;
}
}
1. 指定宽高时使用绝对定位的特性来设置元素居中
div{
width:100px;
height:100px;
background-color: aqua;
position:absolute;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
}
2. 未指定宽高时使用平移来实现定位
div{
background-color: aqua;
position:absolute;
/* left和top的百分比是相对于其最近的定位祖先元素 */
left:50%;
top:50%;
/* transform 中的百分比是相对于元素自身 */
transform:translateX(-50%) translateY(-50%)
}
transform设置元素平移并不会影响页面的布局
body{
background-color: #f5f5f5;
}
div{
width:234px;
height: 300px;
background-color: #fff;
margin:50px auto;
transition:all .3s;
}
div:hover{
box-shadow: 0 5px 10px rgba(0, 0, 0, .5);
transform:translateY(-5px);
}
结构
<div class="clock">
<!-- 外边的div进行旋转,而里面的指针随div一起旋转 -->
<!-- 秒针 -->
<div class="second-wrapper">
<div class="second"></div>
</div>
<!-- 分针 -->
<div class="minute-wrapper">
<div class="minute"></div>
</div>
<!-- 时针 -->
<div class="hour-wrapper">
<div class="hour"></div>
</div>
</div>
样式
<style>
.clock{
width:150px;
height:150px;
border:5px solid black;
border-radius:50%;
margin:150px auto;
position: relative;
}
.clock>div{
position: absolute;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
}
.second-wrapper{
width:140px;
height:140px;
animation: run 10s steps(60) infinite ;
}
.second{
height:70px;
width:3px;
background-color: black;
margin:0 auto;
}
.minute-wrapper{
width:120px;
height:120px;
animation: run 600s steps(60) infinite;
}
.minute{
height:60px;
width:5px;
background-color: black;
margin:0 auto;
}
.hour-wrapper{
width:100px;
height:100px;
animation: run 7200s linear delay infinite;
}
.hour{
height:50px;
width: 5px;
background-color: red;
margin:0 auto;
}
@keyframes run{
from{
transform: rotateZ(0deg);
}
to{
transform: rotateZ(360deg);
}
}
</style>
结构
<div>
<img src="img/mi1.jpg" alt="">
</div>
样式
<style>
div{
width:400px;
border:1px solid red;
overflow: hidden;
}
img{
width:100%;
vertical-align:top;
transition:.3s;
}
img:hover{
transform:scale(1.2);
}
</style>
// 变量
@a:white;
@b:box1;
@c:200px;
// 使用变量时,如果是直接使用,则以 @变量名 的形式使用即可
.box2{
background-color: @a;
width:@c;
}
// 作为类名或者是一部分值使用时必须以 @{变量名} 的形式使用
.@{b}{
width: @c;
background-image:url("@{b}/1.png");
}
// extend共享box2的样式并另外添加自己的样式
.box3:extend(.box2){
height:@a;
// & 表示外层元素box3
&:hover{
border:1px solid red;
}
// 复制box1中全部属性,性能比extend差
.box1()
}
作用:指定容器中弹性元素的排列方式;
属性值:row 默认值 弹性元素在容器中自左向右水平排列(相当于float:left)
row-reverse 弹性元素在容器中自右向左水平排列(相当于float:right)
column 弹性元素在容器中自上向下垂直排列
column-reverse 弹性元素在容器中自下向上垂直排列
主轴:弹性元素的排列方向;
侧轴:与主轴垂直的方向;
可以同时设置flex-direction和flex-wrap,位置任意
辅轴空白空间的分布,取值和justify-content相同;
display:flex;
justify-content: center;
align-items: center;
作用:弹性元素的伸展系数
弹性容器有剩余空间时,弹性元素会按照比例进行伸展;
flex-grow:1;
作用:弹性元素的收缩系数
弹性容器不足以容纳弹性元素的时候,按比例进行收缩;
缩减多少是根据元素的大小和缩减系数共同决定的;
用来覆盖当前元素上的align-items
决定弹性元素的排列顺序
一般情况下,移动端将视口的宽度设置为980px,如果pc端网页超出了这个宽度,那么移动端会将整个网页进行缩放从而将整个页面全部显示出来;
,device-width将页面的宽度设置为跟随设备屏幕的宽度,initial-scale设置页面的初始缩放比例;响应式布局是指网页根据不同的设备或者窗口大小呈现不同的状态;
媒体查询为不同的设备或者不同的状态来分别设置样式,响应式布局的关键在于媒体查询;
可以写多个类型,用逗号隔开即可;
@media screen,print {
div{
width:100px;
height: 100px;
background-color: black;
}
}
only关键字用于解决浏览器的兼容问题,有的浏览器不支持媒体查询但是认识screen,为了避免出现错误,在screen之前加上only,浏览器就不会识别出screen了;
@media only screen {
div{
width:100px;
height: 100px;
background-color: black;
}
}
@media only screen and (min-width:600px) and (max-width:1000px){
body{
background-color: black;
}
}
meitu美图