css前端面试题(一)

目录

一、谈一谈你对css布局的理解

二、请列举几种可以清楚浮动的方法

2.1额外标签法

2.2父级添加overflow

2.3父级添加after伪元素

2.4父级添加双伪元素

三、请列举几种可以隐藏元素的方法?

四、css什么属性可以继承?

4.1字体系列属性

4.2文本系列属性

五、css选择器

5.1选择器

5.2css选择器的优先级

5.3权重

六、css中link和@import的区别是?

七、定位

八、如何让一个盒子水平垂直居中?

第一种方式(已知盒子宽高)

第二种方式

第三种方式

第四种方式

 九、cookie和session的区别?

十、 基础页面布局

10.1一个页面上两个div左右铺满整个浏览器,要保证左边的div一直为100px,右边的div跟随浏览器大小变化

​ 方法1:

方法2:


一、谈一谈你对css布局的理解

常见的布局方式:

  • 固定布局(宽高等设置固定像素)
  • 流式布局(百分比布局)
  • 弹性布局(Flex伸缩布局)
  • 浮动布局(Float)
  • 定位布局(position)

二、请列举几种可以清楚浮动的方法

2.1额外标签法

使用方法:额外标签法会在浮动元素末尾添加一个空的div标签。

<div style="clear:both"></div>

2.2父级添加overflow

可以给父级添加 overflow 属性,将其属性值设置为 hidden

overflow:hidden;

2.3父级添加after伪元素

.clearfix:after {  
   content: ""; 
   display: block; 
   height: 0; 
   clear: both; 
   visibility: hidden;  
 } 
 .clearfix {  /* IE6、7 专有 */ 
   *zoom: 1;
 } 

2.4父级添加双伪元素

.clearfix:before,.clearfix:after {
   content:"";
   display:table; 
 }
 .clearfix:after {
   clear:both;
 }
 .clearfix {
    *zoom:1;
 }  

三、请列举几种可以隐藏元素的方法?

  • visibility: hidden;这个属性只是简单的隐藏某个元素,但是元素占用的空间任然存在。
  • opacity: 0;一个CSS3属性,设置0可以使一个元素完全透明,制作出和visibility一样的效果。
  • display: none;元素会变得不可见,并且不会再占用文档的空间。

四、css什么属性可以继承?

字体以及文本相关的属性可以继承

4.1字体系列属性

  • font-family:字体系列
  • font-weight:字体的粗细
  • font-size:字体的大小
  • font-style:字体的风格

4.2文本系列属性

  • text-indent:文本缩进
  • text-align:文本水平对齐
  • line-height:行高
  • word-spacing:单词之间的间距
  • letter-spacing:中文或者字母之间的间距
  • text-transform:控制文本大小写(uppercase全大写、lowercase全小写、capitalize首字母大写)
  • color:文本颜色

五、css选择器

5.1选择器

  • 元素选择器:* 、标签选择器、id选择器、类选择器
  • 关系选择器:子集选择器和后代选择器
  • 属性选择器:E[att]、E[att="val"]等等
  • 伪类选择器:E:link、E:visited、E:hover、E:active E:first-child、E:last-child等
  • 伪对象选择器:E:before和E:after等

5.2css选择器的优先级

!important>id>类>标签选择器

5.3权重

一个行内样式+1000

一个id+100

一个属性选择器/class类/伪类选择器+10

一个元素名/伪对象选择器+1

六、css中link和@import的区别是?

两者都是外部引用css的方式

  1. link引用CSS时,在页面载入时同时加载;@import需要页面完全载入以后再加载。
  2. link是XHTML标签,无兼容问题;@import则是在CSS2.1提出的,低版本的浏览器不支持。
  3. link支持使用Javascript控制DOM改变样式;而@import不支持。

七、定位

只有添加了定位的元素才可以设置z-index属性,后面的值代表层级,没有px等单位。

定位代码参照物
相对定位positive:relative参照它在页面中原来的位置进行移动的
绝对定位position:absolute相对于距离它最近的有定位的父元素进行移动的
固定定位position:fixed相对于页面的位置进行移动的

八、如何让一个盒子水平垂直居中?

第一种方式(已知盒子宽高)

小盒子绝对定位,设置top50%,left50%;margin-top和margin-left分别设置小盒子宽高的一半,大盒子相对定位

<div id="big">
    <div id="small"></div>
</div>
<style>
        *{
            margin: 0;
            padding: 0;
        }
        #big{
            width: 200px;
            height: 200px;
            background-color: red;
            /* 水平居中 */
            margin: 0 auto;
            position: relative;
        }
        /* 子绝父相 */
        #small{
            width: 100px;
            height: 100px;
            background-color: yellow;
            position: absolute;
            /*大盒子高度的一半*/
            top: 50%;
            /* margin设置为小盒子高度的一半 */
            margin-top: -50px;
            /*大盒子宽度的一半*/
            left: 50%;
            /* margin设置为小盒子宽度的一半 */
            margin-left: -50px;
        }
</style>

第二种方式

 小盒子绝对定位,设置top50%,left50%;css3新属性transform: translate(-50%,-50%);,大盒子相对定位

<div class="a">
    <div class="b"></div>
</div>
.a{
    width: 300px;
    height: 500px;
    background-color: violet;
    /* 相对定位 */
    position: relative;
}
.b{
    width: 100px;
    height: 200px;
    background-color: wheat;
    /* 绝对定位 */
    position: absolute;
    top: 50%;
    left: 50%;
    /* css3新属性位移 */
    transform: translate(-50%,-50%);
}

第三种方式

 小盒子绝对定位,设置top:0;bottom:0;left:0;right:0;margin:auto,大盒子相对定位

<div class="a">
    <div class="b"></div>
</div>
<style>
        .a{
            width: 300px;
            height: 500px;
            background-color: violet;
            /* 相对定位 */
            position: relative;
        }
        .b{
            width: 100px;
            height: 200px;
            background-color: wheat;
            /* 绝对定位 */
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
        }
</style>

第四种方式

弹性盒子

<div class="big">
    <div class="small"></div>
</div>
.big{
            width: 500px;
            height: 500px;
            background-color: antiquewhite;
            /* 设置为弹性盒子 */
            display: flex;
            /* 设置侧轴居中 */
            align-items: center;
            /* 设置主轴居中 */
            justify-content: center;
        }
        .small{
            width: 300px;
            height: 200px;
            background-color: aqua;
        }

 九、cookie和session的区别?

cookiesession
存放地点数据存放在客户端浏览器上数据存放在服务器上
安全性不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗安全
性能当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,使用cookie会在一定时间内保存在服务器上
数据大小数据大小不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
个人建议其它需要保留的信息存储登录信息等重要信息

十、 基础页面布局

10.1一个页面上两个div左右铺满整个浏览器,要保证左边的div一直为100px,右边的div跟随浏览器大小变化

 方法1:

  1. 给左边盒子设置固定宽添加浮动
  2. 给右边盒子添加一个margin-left:左边盒子的宽度
<div class="box1"></div>
<div class="box2"></div>
.box1{
    width: 100px;
    height: 200px;
    background-color: aquamarine;
    float: left;
}
.box2{
     height: 200px;
     background-color: blueviolet;
     margin-left: 100px;
}

方法2:

  1. 用一个大盒子包住两个小盒子
  2. 给大盒子添加弹性布局
  3. 给左边的小盒子设置固定宽
  4. 给右边的小盒子添加 flex-grow: 1;属性
    <div class="big">
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
        .big{
            display: flex;
            flex-direction: row;
            align-items: center;
        }
        .box1{
            width: 100px;
            height: 200px;
            background-color: aquamarine;
        }
        .box2{
            height: 200px;
            background-color: blueviolet;
            flex-grow: 1;
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值