box-sizing:content-box; //标准盒模型 box-sizing:border-box; //IE 盒模型
<style>.text {background: blue;}.text span + span {line-height: 30px;}.text span:last-child {font-size: 20px;line-height: 40px;}</style><div class="text"><span>h1 box</span><span>h2 box</span><span>h3 box</span></div>
.text
高度为 40px;
当 line-height 为字体高时,此时字体居中显示
当字体大小不一致时,此时是按baseline
对齐(即字体底部),若要此时字体对齐需要都设置 vertical-align:middle
图片和文字显示时,图片距离底部由缝隙?
<style>.image {background: orange;}</style><div class="image"><span>text image..</span><imgsrc="https://tse2-mm.cn.bing.net/th?id=OIP.AuVMA21FXKpPXBnHYLTsIgHaFj&w=174&h=130&c=7&o=5&pid=1.7"/></div>
baseline
对齐,因此和文字显示距离底部会有缝隙vertical-align
或者设置display:block
可以去除间隙.border{border:30px solid transparent; //边框透明border-image:url(xxx) 30 round; // 30 表示位移距离 round:让中间距离被图片均分}
.border {width: 100px;height: 100px;border-right: 30px solid transparent;border-bottom: 30px solid blue;border-left: 30px solid transparent;}
2.2 此时我们将 with
不断减少梯形上边也会不断减少直到为 0
时就成了三角形
.border {width: 0;height: 100px;border-right: 30px solid transparent;border-bottom: 30px solid blue;border-left: 30px solid transparent;}
2.3 此时我们加入圆角后,会成为扇形
.border {/* 此处为2.2内容 */border-radius: 50%;}
.txt {/* 单词超出文本换行 */overflow-wrap: break-word;}.txt {/* 所有超出范围的换行 */word-break: break-all;}.txt {/* 表示文字不换行 */white-space: nowrap;}
决定布局方式的主要是position
、float
、以及 css3 新增的display
属性的 grid、flex 值。下面介绍基本用法,关于更多面试相关 👉布局相关面试题
采用浮动布局后,会使父元素内容塌陷,此时一定记住要清除浮动
<style>/* 父元素清除浮动 */.row::after {display: table;clear: both;content: '';}.col-2 {float: left;width: 44%;margin-right: 0;margin-left: 4%;}</style><div class="row"><div class="col-2"></div><div class="col-2"></div></div>
** 这里除了使用table
元素外还可以使用flow-root
效果相同,或者采用其它形成 BFC 方案overflow
,inline-bolck
,block
等,当由于这些在生产中会产生副作用,建议采用前面方案。
display: grid | inline-grid;
.myClass {grid-template-rows: 50% 25vh auto;grid-template-columns: [col1] 40px [col2] 3fr;}.anotherClass {grid-template-rows: repeat(2, 350px [name]) 10%;}/* 等价 */.anotherClass {grid-template-rows: 350px [name] 350px [name] 10%;}
.wrapper {grid-template-columns: 1 r;grid-temgrid-template-areas:'header header header header''aside . article article';grid-template-rows: auto;grid-template-columns: 1fr 3fr;}/* 2. 指定区域 */.class1 {grid-area: header;}.class2 {grid-area: article;}.class3 {grid-area: aside;}
grid-column-start
.class1 {grid-row-start: 3;grid-row-end: span footer-end;grid-column-start: 1;grid-column-end: span 4;}
.class1 {grid-row: 3 / span footer-end;grid-column: 1 / span 4;}
.class1 {grid-area: 1 / name3 / namedline / 4;}
**练习:**通过 grid 布局让下面 html 在不同设备下展示不通的排版
.wrapper {display: grid;grid-gap: 10px;font-family: Arial, sans-serif;}.wrapper > * {padding: 1em;border-radius: 1em;}header {color: white;background-color: blue;}article {color: white;background-color: green;}aside {background-color: yellow;}@media (min-width: 650px) {header {grid-row: 2 / 3;grid-column: 1 / 2;}article {grid-row: 1 / 2;grid-column: 1 / 2;}aside {grid-row: 1 / 3;grid-column: 2 / 3;}}@media (min-width: 1000px) {header {grid-row: 1 / 2;grid-column: 2 / 3;}article {grid-row: 2 / 3;grid-column: 2 / 3;}aside {grid-row: 1 / 3;grid-column: 1 / 2;}}
<div class="wrapper"><header><h1>My Fine Header</h1></header><article><h2>Article Title</h2><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipiscilaborum, ex tempora esse fuga consequuntur dolores excepturi, eaque quisincidunt?</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipiscilaborum, ex tempora esse fuga consequuntur dolores excepturi, eaque quisincidunt?</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipiscilaborum, ex tempora esse fuga consequuntur dolores excepturi, eaque quisincidunt?</p></article><aside><h3>My Aside</h3><blockquote>A fine quote!</blockquote></aside></div>
该属性可以让几乎所有元素的边框产生阴影。如果元素同时设置了 border-radius ,阴影也会有圆角效果。
<style>.box {/* x偏移量 | y偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色 */box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);/* 插页(阴影向内) | x偏移量 | y偏移量 | 阴影颜色 */box-shadow: inset 5em 1em gold;/* 任意数量的阴影,以逗号分隔 */box-shadow: 3px 3px red, -1em 0 0.4em orange;}</style>
<style>.box {/* x偏移量 | y偏移量 | 阴影模糊半径| 阴影颜色 */text-shadow: 1px 1px 2px black;/* x偏移量 | y偏移量 | 阴影颜色 */text-shadow: 5px 5px #558abb;}</style>
<style>.box-radius {width: 100px;height: 100px;background-color: blue;/* top-left | top-right| bottom-left| bottom-right */border-radius: 100% 0 0 0;}</style>
创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。
<style>.box-border {width: 300px;height: 300px;background-color: orange;border: 1px solid blue; 在容器中间裁剪一个 1transition: clip-path 0.4s; nset(100px 100px);/* 添加过渡clip-path: inset(100px 100px);}.test {/* 在容器 30% * 30% 位置创建一个 10% 圆形 (默认会在 50% * 50%)*/clip-path: circle(10% at 30% 30%);/* 在原图形上x,y 基础上 创建 (50%,0)(100%,50%)(50%,50%)三个点然后形成封闭图形 */clip-path: polygon(50% 0, 100% 50%, 50% 50%);}</style>
属性允许你旋转,缩放,倾斜或平移给定元素。这是通过修改 CSS 视觉格式化模型的坐标空间来实现的
<style>.box-tranform {/* 水平方向 x移动100px,y移动 40px */transform: translate(100px, 40px);/* 顺时针旋转 30度 */transform: rotate(30deg);/* x,y同时缩放50% */transform: scale(0.5);/* x斜切30度,y斜切50度 */transform: skew(30deg, 50deg);}</style>
<style>.container-cue {/* 父容器 设置透视距离 */perspective: 500px;}.cue {/* 子元素设置 tratransform: rotateZ(30deg); preserve-3d;/* 元素效果变换transform-style: preserve-3d;}</style><div class="container-cue"><div class="cue"></div></div>
<style>.container-cue {width: 200px;height: 200px;padding: 10px;border: 1px solid red;perspective: 500px;}.cue {idth: 200px;height: 200px;position: relative;width: 200px;height: 200px;transform: translateZ(-100px);transform-style: preserve-3d;transition: transform 3s;}.cue:hover {transform: translateZ(-100px) rotateX(90deg) rotateY(90deg);}.cue div {position: absolute;width: 200px;height: 200px;font-size: 50px;line-height: 200px;text-align: center;}.front {background: rgba(255, 0, 0, 0.3);transform: translateZ(100px);}.back {background: rgba(0, 255, 0, 0.3);transform: translateZ(-100px) rotateY(180deg);}.left {background: rgba(0, 255, 255, 0.3);transform: translateX(-100px) rotateY(-90deg);}.right {background: rgba(0, 255, 255, 0.3);transform: translateX(100px) rotateY(90deg);}.top {background: rgba(100, 100, 100, 0.4);transform: translateY(-100px) rotateX(-90deg);}.bottom {background: rgba(100, 70, 0, 0.4);transform: translateY(100px) rotateX(90deg);}</style><div class="container-cue"><div class="cue"><div class="front">1</div><div class="back">2</div><div class="left">3</div><div class="right">4</div><div class="top">5</div><div class="bottom">6</div></div></div>
它是一款很好的 css 转换工具。本身只具有解析的能力,凭借强大的插件生态可以很好对 css 进行转换,例如:autoprefixer,cssnano,cssnext 以及 CSS Modules。 https://github.com/postcss/postcss#usage