zoukankan      html  css  js  c++  java
  • CSS面试题整理

    Css篇:

    1.有哪项方式可以对一个DOM设置它的CSS样式?  

    • 外部样式表,引入一个外部css文件
    • 内部样式表,将css代码放在 <head> 标签内部
    • 内联样式,将css样式直接定义在 HTML 元素内部

    2.CSS都有哪些选择器?

    • 派生选择器(用HTML标签申明)
    • id选择器(用DOM的ID申明)
    • 类选择器(用一个样式类名申明)

    还有一些扩展选择器。

    • 后代选择器(利用空格间隔,比如div .a{  })
    • 群组选择器(利用逗号间隔,比如p,div,#a{  }) 

    CSS选择器的优先级是怎么样定义的?

     

    • 用1表示派生选择器的优先级
    • 用10表示类选择器的优先级
    • 用100标示ID选择器的优先级
      • div.test1 .span var 优先级 1+10 +10 +1  
      • span#xxx .songs li 优先级1+100 + 10 + 1  
      • #xxx li 优先级 100 +1 

    3.CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?  

      最基本的:

      设置display属性为none,或者设置visibility属性为hidden

      技巧性:

      设置宽高为0,设置透明度为0,设置z-index位置在-1000

     

    4.超链接访问过后hover样式就不出现的问题是什么?如何解决?

    答案:被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H-A(link,visited,hover,active)

    5.什么是Css Hack?ie6,7,8的hack分别是什么?

    答案:针对不同的浏览器写不同的CSS code的过程,就是CSS hack。

    #test{   
            width:300px;   
            height:300px; 
            background-color:blue;      /*firefox*/
            background-color:red9;      /*all ie*/
            background-color:yellow;    /*ie8*/
            +background-color:pink;        /*ie7*/
            _background-color:orange;       /*ie6*/    }  
            :root #test { background-color:purple9; }  /*ie9*/
        @media all and (min-0px){ #test {background-color:black;} }  /*opera*/
        @media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }       /*chrome and safari*/

    6.请用Css写一个简单的幻灯片效果页面

    答案:知道是要用css3。使用animation动画实现一个简单的幻灯片效果。

    /**HTML**/
            div.ani
     
            /**css**/
            .ani{
              width:480px;
              height:320px;
              margin:50px auto;
              overflow: hidden;
              box-shadow:0 0 5px rgba(0,0,0,1);
              background-size: cover;
              background-position: center;
              -webkit-animation-name: "loops";
              -webkit-animation-duration: 20s;
              -webkit-animation-iteration-count: infinite;
            }
            @-webkit-keyframes "loops" {
                0% {
                    background:url(http://d.hiphotos.baidu.com/image/w%3D400/sign=c01e6adca964034f0fcdc3069fc27980/e824b899a9014c08e5e38ca4087b02087af4f4d3.jpg) no-repeat;             
                }
                25% {
                    background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=edee1572e9f81a4c2632edc9e72b6029/30adcbef76094b364d72bceba1cc7cd98c109dd0.jpg) no-repeat;
                }
                50% {
                    background:url(http://b.hiphotos.baidu.com/image/w%3D400/sign=937dace2552c11dfded1be2353266255/d8f9d72a6059252d258e7605369b033b5bb5b912.jpg) no-repeat;
                }
                75% {
                    background:url(http://g.hiphotos.baidu.com/image/w%3D400/sign=7d37500b8544ebf86d71653fe9f9d736/0df431adcbef76095d61f0972cdda3cc7cd99e4b.jpg) no-repeat;
                }
                100% {
                    background:url(http://c.hiphotos.baidu.com/image/w%3D400/sign=cfb239ceb0fb43161a1f7b7a10a54642/3b87e950352ac65ce2e73f76f9f2b21192138ad1.jpg) no-repeat;
                }
            }

    7.行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗?

    块级元素(block)特性:

    • 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;
    • 宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制;

    内联元素(inline)特性:

    • 和相邻的内联元素在同一行;
    • 宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变(也就是padding和margin的left和right是可以设置的),就是里面文字或图片的大小。

    那么问题来了,浏览器还有默认的天生inline-block元素(拥有内在尺寸,可设置高宽,但不会自动换行),有哪些

    答案:<input> 、<img> 、<button> 、<texterea> 、<label>。

    8.什么是外边距重叠?重叠的结果是什么?

    外边距重叠就是margin-collapse。

    在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。

    折叠结果遵循下列计算规则:

    1. 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。
    2. 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。
    3. 两个外边距一正一负时,折叠结果是两者的相加的和。

     9.rgba()和opacity的透明效果有什么不同?

    rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有内容的透明度,

    而rgba()只作用于元素的颜色或其背景色。(设置rgba透明的元素的子元素不会继承透明效果!)

    10.css中可以让文字在垂直和水平方向上重叠的两个属性是什么?

    答案:

    垂直方向:line-height

    水平方向:letter-spacing

    那么问题来了,关于letter-spacing的妙用知道有哪些么?

    答案:可以用于消除inline-block元素间的换行符空格间隙问题。

    .space {
        letter-spacing: -6px;
    }
    .space a {
        display: inline-block;
        padding: .5em 1em;
        background-color: #cad5eb;
        letter-spacing: 0;
    }
    <div class="space">
        <a href="##">惆怅</a>
        <a href="##">淡定</a>
        <a href="##">热血</a>
    </div>

    最终效果

    可以完美的解决除了Opera浏览器之外的所有浏览器兼容(word-spacing 效果应该相仿,Opera下未测)。

     11.如何垂直居中一个浮动元素?

    // 方法一:已知元素的高宽
     
    #div1{
        background-color:#6699FF;
        width:200px;
        height:200px;
     
        position: absolute;        //父元素需要相对定位
        top: 50%;
        left: 50%;
        margin-top:-100px ;   //二分之一的height,width
        margin-left: -100px;
        }
     
    //方法二:未知元素的高宽
     
      #div1{
        width: 200px;
        height: 200px;
        background-color: #6699FF;
     
        margin:auto;
        position: absolute;        //父元素需要相对定位
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        }

    那么问题来了,如何垂直居中一个<img>?用更简便的方法。)

    #container     //<img>的容器设置如下
    {
        display:table-cell;
        text-align:center;
        vertical-align:middle;
    }

    12.px和em的区别。

    px和em都是长度单位,区别是,px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。

    浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。

    13.描述一个”reset”的CSS文件并如何使用它。知道normalize.css吗?你了解他们的不同之处?

    重置样式非常多,凡是一个前端开发人员肯定有一个常用的重置CSS文件并知道如何使用它们。他们是盲目的在做还是知道为什么这么做呢?原因是不同的浏览器对一些元素有不同的默认样式,如果你不处理,在不同的浏览器下会存在必要的风险,或者更有戏剧性的性发生。

    你可能会用Normalize来代替你的重置样式文件。它没有重置所有的样式风格,但仅提供了一套合理的默认样式值。既能让众多浏览器达到一致和合理,但又不扰乱其他的东西(如粗体的标题)。

    在这一方面,无法做每一个复位重置。它也确实有些超过一个重置,它处理了你永远都不用考虑的怪癖,像HTML的audio元素不一致或line-height不一致。

    14.Sass、LESS是什么?大家为什么要使用他们?

    他们是CSS预处理器。他是CSS上的一种抽象层。他们是一种特殊的语法/语言编译成CSS。

    例如Less是一种动态样式语言. 将CSS赋予了动态语言的特性,如变量,继承,运算, 函数. LESS 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可一在服务端运行 (借助 Node.js)。

    为什么要使用它们?

    • 结构清晰,便于扩展。
    • 可以方便地屏蔽浏览器私有语法差异。这个不用多说,封装对浏览器语法差异的重复处理,减少无意义的机械劳动。
    • 可以轻松实现多重继承。
    • 完全兼容 CSS 代码,可以方便地应用到老项目中。LESS 只是在 CSS 语法上做了扩展,所以老的 CSS 代码也可以与 LESS 代码一同编译。

    15.display:none与visibility:hidden的区别是什么?

    • display : 隐藏对应的元素但不挤占该元素原来的空间。
    • visibility: 隐藏对应的元素并且挤占该元素原来的空间。

    即是,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在。

  • 相关阅读:
    网页中嵌入百度地图
    第一篇博客, 感谢博客园
    Flask-Migrate插件
    基于airtest-selenium的UI自动化测试
    自动化测试中如何解决图片验证码问题
    Linux下搭建自动化测试环境
    python3中使用subprocess模块执行外部命令
    微信小程序自动化实战(一)
    python3中使用objectpath模块处理Json对象
    Pytest中如何解决测试用例的依赖执行问题
  • 原文地址:https://www.cnblogs.com/love0o/p/4998469.html
Copyright © 2011-2022 走看看