css-面试题
Posted jcxfighting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css-面试题相关的知识,希望对你有一定的参考价值。
参考:https://www.cnblogs.com/chenwenhao/p/11217590.html
盒模型
/* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; margin: 20px; background: red; border: 20px solid black; box-sizing: border-box; }
/* 标准模型 */ box-sizing:content-box; 内容+padding ===》红色区域 =200px /*IE模型*/ box-sizing:border-box;
如何实现一个最大的正方形
用 padding-bottom
撑开边距
section { width:100%; padding-bottom: 100%; background: #333; }
一行水平居中,多行居左
<div><span>我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。我是多行文字。</span></div> <div><span>我是一行文字</span></div> <style> div{text-align: center;} div span{display: inline-block;text-align: left;} </style>
水平垂直居中
16种方法实现水平居中垂直居中(http://louiszhai.github.io/2016/03/12/css-center/)
两栏布局,左边固定,右边自适应,左右不重叠
flex做自适应布局很容易,但兼容性不好,这里统一不用flex布局
.left{ float:left; width:300px; margin-right: 10px; background: red; } .right{ overflow: hidden; /* 创建BFC */ background: yellow; }
如何实现左右等高布局
table
布局兼容性最好,当然flex
布局的align-items: stretch;
也行
<div class="layout"> <div class="layout left">left</div> <div class="layout right">center</div> </div> <style> .layout{ display: table; width: 100%; } .layout div{ display: table-cell; } .layout .left{ width: 50%; height: 200px; background: red; } .layout .right{ width: 50%; background: yellow; } </style>
画三角形 border+transparent
.shape { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 50px solid transparent; border-bottom: 50px solid blue; background: white; }
link @import导入css
- link是Xhtml标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS
- link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载
- link无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持
- link支持使用javascript控制DOM去改变样式;而@import不支持
BFC理解
BFC触发条件:
- 根元素,即html
- float的值不为none(默认)
- position的值为absolute或fixed
- overflow的值不为visible(默认)
- display的值为inline-block、table-cell、table-caption
BFC特性:
- 内部的Box会在垂直方向上一个接一个放置。
- Box垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的margin会发生重叠。
- 每个元素的margin box 的左边,与包含块border box的左边相接触。
- BFC的区域不会与float box重叠。(可用于清浮动)
- BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
- 计算BFC的高度时,浮动元素也会参与计算。
Rem:
rem原理
rem布局的本质是等比缩放,一般是基于宽度,假设将屏幕宽度分为100份,每份宽度是1rem,1rem的宽度是屏幕宽度/100,饭后子元素设置rem单位的属性,通过改变html元素的字体大小,就可以设置子元素的时机大小。
rem的布局加载闪烁的问题
解决方案:媒体查询设置根元素字体的大小,比如设计稿是750px,对应的开发方式是1rem=100px,那375px的font-size大小就是50px
比rem更好的方案(缺点兼容性不好)
vw(1vw是视口宽度的1%,100vw就是视口宽度),vh(100vh就是视口高度)
定位、transform:tranlate、scareX
以上是关于css-面试题的主要内容,如果未能解决你的问题,请参考以下文章