懒得进行整理,直接复制粘贴用HTML打开
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.hr {
width: 300px;
background-color: #000;
}
.hr.half-px {
height: 0.5px;
}
.hr.one-px {
height: 1px;
}
.hr.scale-half {
height: 1px;
transform: scaleY(0.5);
}
.hr.gradient {
height: 1px;
background: linear-gradient(0deg, #fff, #000);
}
.hr.boxshadow {
height: 1px;
background: none;
box-shadow: 0 0.5px 0 #000;
}
.hr.svg {
background: none;
height: 1px;
background: url("data:image/svg+xml;utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='1px'><line x1='0' y1='0' x2='100%' y2='0' stroke='#000'></line></svg>");
}
.box {
width: 0;
height: 0;
border-top: 0px solid transparent;
border-bottom: 100px solid #f00;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
transform: scale(1, 1.732);
}
.fu {
width: 400px;
height: 400px;
background-color: pink;
/* position: relative; */
/* 4.弹性布局,子元素可以不用设置宽高 */
/* display: flex; */
/* 主轴居中 */
/* justify-content: center; */
/* 侧轴居中 */
/* align-items: center; */
/* 5.table布局 子元素可以不用设置宽高 */
/* display: table-cell; */
/* 垂直方向上居中对齐 */
/* vertical-align: middle; */
/* 文本对齐方式 */
/* text-align: center; */
/* 6.网格布局 */
display: grid;
align-items: center;
justify-content: center;
}
.zi {
/* width: 100px;
height: 100px; */
background-color: #f00;
/* position: absolute;
left: 50%;
top: 50%; */
/* 1.需要给子元素设置宽高 */
/* margin-left: -50px;
margin-top: -50px; */
/* 2.不需要给子元素设置宽高 */
/* transform: translate(-50%, -50%); */
/* 3.子元素需要宽高 */
/* left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto; */
display: inline-block;
}
</style>
</head>
<body>
<!-- (1)pc端画一条0.5px的线 -->
<!-- 直接画 -->
<p>0.5px</p>
<div class="hr half-px"></div>
<p>1px</p>
<div class="hr one-px"></div>
<!-- 设置1px,然后使用缩放scale 0.5 -->
<p>1px + scaleY(0.5)</p>
<div class="hr scale-half"></div>
<!-- 用线性渐变linear-gradient -->
<p>linear-gradient</p>
<div class="hr gradient"></div>
<!-- 使用box-shadow -->
<p>box-shadow</p>
<div class="hr boxshadow"></div>
<!-- 利用SVG -->
<p>svg</p>
<div class="hr svg"></div><br><br><br>
<!-- (2)画出来一个等边三角形、一个等腰三角形 -->
<div class="box">
<!-- 三角形 -->
</div>
<!-- (3)让一个元素水平垂直据中 -->
<!-- 方法一:定位+margin负值 -->
<!-- 方法二:定位+transform负值 -->
<!-- 方法三:定位+margin:auto -->
<!-- 方法四:flex布局 -->
<!-- 方法五:table布局 -->
<!-- 方法六:grid网格布局 -->
<div class="fu">
<div class="zi">子元素</div>
</div>
<!-- (4)flex弹性布局所有相关属性 -->
<!-- display:flex
三个核心概念:
-flex项,需要布局元素
flex容器,包含flex项
direction,flex的布局方向
-->
<!-- flex-direction
row(默认值):主轴为水平方向,从左到右
row-reverse:主轴为水平方向,从右到左
column:主轴为垂直方向,从上到下
column-reverse:主轴为垂直方向,从下到上
-->
<!-- flex-wrap
nowrap(默认):不换行
wrap:换行,第一行在上方
wrap-reverse:换行,第一行在下方
-->
<!-- justify-content
flex-start(默认值):左对齐
flex-end:右对齐
center:居中
space-between:两端对齐,项目之间间隔相等
space-around:每个项目两侧间隔相等,项目之间的间隔比项目与边框的间隔大一倍
-->
<!-- align-items
flex-start:交叉轴的起点对齐
flex-end:交叉轴的终点对齐
center:交叉轴的中点对齐
baseline:项目第一行的基线对齐
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度
-->
<!-- align-content
定义了多根轴线的对齐方式,如果项目只有一根轴线,那么该属性将不起作用
flex-start:与交叉轴的起点对齐
flex-end:与交叉轴的终点对齐
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍
stretch(默认值):轴线占满整个交叉轴
-->
<!-- order属性 -->
<!--flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。 -->
<!-- flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
.item {
flex-shrink: <number>; /* default 1 */
}
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效-->
<!-- align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
} -->
<!-- (5)让一个元素隐藏的方式、分别有什么区别 -->
<!-- 1、overflow:hidden;
防止溢出,也是一种隐藏,只不过是把超出范围的元素隐藏,这种一般用于文字过多或者图片特效以及自适应中div没法设置高度时使用
2.display:none
设置元素的display为none是最常用的隐藏元素的方法。
.hide {
display:none;
}
这就是完全的隐藏了,直接消失,任何对该元素直接的用户交互操作都不可能生效,被隐藏的元素完全不会占用空间,仿佛元素完全不存在一样。
3、opacity:0
opacity属性表示元素的透明度,而将元素的透明度设置为0后,元素也是隐藏的。
.transparent {
opacity:0;
}
这种方法和visibility:hidden的一个共同点是元素隐藏后依旧占据着空间,设置透明度为0后,元素只是隐身了,它依旧存在页面中,它也同样影响用户交互。在读屏软件中会被识别。
4、position:
元素的定位
.box{
position:absolutely;
top:-4555px;
left:-45545px
}
top和left设置成足够大的负数,相当于把元素放到可视区域外,它不会影响布局,能够让元素保持可操作性,在读屏软件上可以被识别。
5,visibility:hidden
设置元素的visibility为hidden也是一种常用的隐藏元素的方法,和display:none的区别在于,元素在页面消失后,其占据的空间依旧会保留着,所以它只会导致浏览器重绘而不会重排。
.hidden{
visibility:hidden
}
visibility:hidden适用于那些元素隐藏后不希望页面布局会发生变化的场景
6,设置height,width等盒模型属性为0
将元素的margin,border,padding,height和width等影响元素盒模型的属性设置成0,如果元素内有子元素或内容,还应该设置其overflow:hidden来隐藏其子元素,一种方法,不建议使用。
.hiddenBox {
margin:0;
border:0;
padding:0;
height:0;
width:0;
overflow:hidden;
}
存在着一些问题。但平时我们用到的一些页面效果可能就是采用这种方式来完成的,比如jquery的slideUp动画,它就是设置元素的overflow:hidden后,接着通过定时器,不断地设置元素的height,margin-top,margin-bottom,border-top,border-bottom,padding-top,padding-bottom为0,从而达到slideUp的效果。 -->
</body>
</html>
<!-- (6)实现一个页面,上下固定高度中间自由变化高度的布局 -->
第一种
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>This is title</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.container {
display: flex;
height: 100%;
flex-direction: column;
}
.top {
height: 100px;
background-color: #a9ff29;
}
.middle {
flex: 1;
overflow: auto;
background-color: #ffb91b;
}
.bottom {
height: 50px;
background-color: #40c3ff;
}
</style>
</head>
<body>
<!-- 弹性布局 -->
<div class="container">
<div class="top">上</div>
<div class="middle">中</div>
<div class="bottom">下</div>
</div>
</body>
</html>
第二种
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>This is title</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.container {
display: grid;
height: 100%;
grid-template-rows: 100px auto 50px;
}
.top {
background-color: #a9ff29;
}
.middle {
background-color: #ffb91b;
}
.bottom {
background-color: #40c3ff;
}
</style>
</head>
<body>
<!-- 网格(grid) -->
<div class="container">
<div class="top">上</div>
<div class="middle">中</div>
<div class="bottom">下</div>
</div>
</body>
</html>
第三种
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>This is title</title>
<style>
* {
margin: 0;
padding: 0;
}
.top {
height: 100px;
background-color: #a9ff29;
}
.middle {
height: calc(100vh - 150px);
background-color: #ffb91b;
}
.bottom {
height: 50px;
background-color: #40c3ff;
}
</style>
</head>
<body>
<!-- 利用css中vh单位和calc() 函数 -->
<div class="container">
<div class="top">上</div>
<div class="middle">中</div>
<div class="bottom">下</div>
</div>
</body>
</html>