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

  1. link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS
  2. link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载
  3. link无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持
  4. link支持使用Javascript控制DOM去改变样式;而@import不支持

BFC理解

BFC触发条件:

  1. 根元素,即html
  2. float的值不为none(默认)
  3. position的值为absolute或fixed
  4. overflow的值不为visible(默认)
  5. display的值为inline-block、table-cell、table-caption

BFC特性:

  1. 内部的Box会在垂直方向上一个接一个放置。
  2. Box垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的margin会发生重叠。
  3. 每个元素的margin box 的左边,与包含块border box的左边相接触。
  4. BFC的区域不会与float box重叠。(可用于清浮动)
  5. BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
  6. 计算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

 

posted on 2019-10-13 17:19  Diamond_xx  阅读(371)  评论(0编辑  收藏  举报

导航