目錄
前端面試之CSS
首頁 web前端 js教程 前端面試真題解析

前端面試真題解析

May 24, 2018 am 10:58 AM
真題 解析 面試

這次帶給大家前端面試真題解析,前端面試真題解析的注意事項有哪些,下面就是實戰案例,一起來看一下。

前端面試之CSS


display: none; 與visibility: hidden; 的差異

  • ## 聯絡:它們都能讓元素不可見

  • 區別:

    • #display:none;會讓元素完全從渲染樹中消失,渲染的時候不佔據任何空間;visibility: hidden;不會讓元素從渲染樹消失,渲染師元素繼續佔據空間,只是內容不可見

    • display: none;是非繼承屬性,子孫節點消失由於元素從渲染樹消失造成,透過修改子孫節點屬性無法顯示;visibility:hidden;是繼承屬性,子孫節點消失由於繼承了hidden,透過設定visibility: visible;可以讓子孫節點明確

    • ##修改常規流中元素的
    • display

      通常會造成文件重排。修改visibility屬性只會造成本元素的重繪

    • 讀螢幕器不會讀取
    • display: none;

      元素內容;會讀取visibility: hidden元素內容

#css hack原理及常用hack

    #原理:利用不同瀏覽器對CSS的支援和解析結果不一樣編寫針對特定瀏覽器樣式。
  • 常見的hack有
    • #屬性hack
    • 選擇器hack
    • IE條件註解
#link 與@import 的差異

  • link

    HTML方式,@importCSS方式

  • # #link
  • 最大限度支持並行下載,

    @import 過多嵌套導致串行下載,出現FOUC

  • link
  • # 可以透過

    rel="alternate stylesheet" 指定候選樣式

    #瀏覽器對
  • link
  • 支援早於

    @import ,可以使用@import 對舊瀏覽器隱藏樣式

  • #@import
  • 必須在樣式規則之前,可以在

    css文件中引用其他文件

    整體來說:
  • link
  • 優於

    @import

  • CSS有哪些繼承屬性

關於文字排版的屬性如:
    • word -break
    • letter-spacing
    • text-align
    • text-rendering
    • #word-spacing
    • white-space
    • text-indent
    • text-transform
    • text-shadow
    • #font
    • line-height
    • color
    • visibility
    • cursor
    外邊距摺疊(collapsing margins)

#鄰近的兩個或多個
    margin
  • 會合併成一個

    margin,叫做外邊距摺疊。規則如下:

  • 兩個或多個毗鄰的普通流中的區塊元素垂直方向上的
      margin
    • 會折疊

      #浮動元素或
    • inline-block
    • 元素或絕對定位元素的

      margin不會和垂直方向上的其他元素的margin折疊

    • 建立了區塊層級格式化上下文的元素,不會和它的子元素發生margin折疊

    • 元素本身的margin-bottom margin-top相鄰時也會折

#介紹一下標準的CSS的盒子模型?低版IE的盒子模型有什麼不同的?

  • 有兩種,IE 盒子模型、W3C 盒子模型;

  • 盒模型:內容(content)、填滿(padding )、邊界(margin)、邊框(border);

  • 區 別:IE的content部分把border 和padding計算了進去;

  • CSS選擇符有哪些?哪些屬性可以繼承?
  • id選擇器( # myid)
  • #類別選擇器(.myclassname)

  • 標籤選擇器(p, h1, p)

  • # 相鄰選擇器(h1 p)

  • 子選擇器(ul >li)

  • 後代選擇器(li a)

  • 通配符選擇器( * )

屬性選擇器(a[rel = "external"])

    偽類別選擇器(a:hover, li:nth-child)
  • 可繼承的樣式:
  • font-size font-family color, UL LI DL DD DT

  • 不可繼承的樣式:border padding margin width height

CSS優先權演算法如何計算?

優先權就近原則,同權重情況下樣式定義最近者為準

  • 載入樣式以最後載入的定位為準優先權為:

    !important >  id > class > tag
  • important 比內嵌優先權高
  • #CSS3新增偽類別有那些?
p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
p:last-of-type  选择属于其父元素的最后 <p> 元素的每个 <p> 元素。
p:only-of-type  选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。
p:only-child        选择属于其父元素的唯一子元素的每个 <p> 元素。
p:nth-child(2)  选择属于其父元素的第二个子元素的每个 <p> 元素。
:after          在元素之前添加内容,也可以用来做清除浮动。
:before         在元素之后添加内容
:enabled        
:disabled       控制表单控件的禁用状态。
:checked        单选框或复选框被选中
登入後複製
  • 如何居中p?如何居中一個浮動元素?如何讓絕對定位的p居中?

p設定一個寬度,然後新增

margin:0 auto
    屬性
  • p{
        width:200px;
        margin:0 auto;
     }
    登入後複製
  • 居中一個浮動元素

  • //确定容器的宽高 宽500 高 300 的层
    //设置层的外边距
     .p {
          width:500px ; height:300px;//高度可以不设
          margin: -150px 0 0 -250px;
          position:relative;         //相对定位
          background-color:pink;     //方便看效果
          left:50%;
          top:50%;
     }
    登入後複製

  • #讓絕對定位的p居中
  •   position: absolute;
      width: 1200px;
      background: none;
      margin: 0 auto;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
    登入後複製
  • display有哪些值?說明他們的功能

  • block         象塊類型元素一樣顯示。

none          缺省值。象行內元素類型一樣顯示。

    inline-block  象行內元素一樣顯示,但其內容象區塊類型元素一樣顯示。
  • list-item     象塊類型元素一樣顯示,並新增樣式清單標記。
    • table         此元素會作為區塊級表格來顯示
  • inherit       規定應該從父元素繼承display 屬性的值

  • ######################## ##########position的值relative和absolute定位原點是? ###############absolute################產生絕對定位的元素,相對於值不為static的第一個父元素進行定位。 ###############fixed(舊IE不支援)################產生絕對定位的元素,相對於瀏覽器視窗進行定位。 ###############relative################產生相對定位的元素,相對於其正常位置進行定位。 ###############static###
    • 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right - z-index 声明)。

  • inherit

    • 规定从父元素继承 position 属性的值

CSS3有哪些新特性?

  • 新增各种CSS选择器  (: not(.input):所有 class 不是“input”的节点)

  • 圆角           (border-radius:8px)

  • 多列布局        (multi-column layout)

  • 阴影和反射        (ShadowReflect)

  • 文字特效      (text-shadow、)

  • 文字渲染      (Text-decoration

  • 线性渐变      (gradient)

  • 旋转          (transform)

  • 增加了旋转,缩放,定位,倾斜,动画,多背景

  • transform:\scale(0.85,0.90)\ translate(0px,-30px)\ skew(-9deg,0deg)\Animation:

用纯CSS创建一个三角形的原理是什么?

// 把上、左、右三条边隐藏掉(颜色设为 transparent)
#demo {
  width: 0;
  height: 0;
  border-width: 20px;
  border-style: solid;
  border-color: transparent transparent red transparent;
}
登入後複製

一个满屏 品 字布局 如何设计?

  • 简单的方式:

    • 上面的p宽100%,

    • 下面的两个p分别宽50%,

    • 然后用float或者inline使其不换行即可

经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?

  • png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.

  • 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一

  • IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;

  • Firefox下,只能使用getAttribute()获取自定义属性。

    • 解决方法:统一通过getAttribute()获取自定义属性

  • IE下,even对象有x,y属性,但是没有pageX,pageY属性

  • Firefox下,event对象有pageX,pageY属性,但是没有x,y属性

li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?

  • 行框的排列会受到中间空白(回车空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了

为什么要初始化CSS样式

  • 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异

对BFC规范(块级格式化上下文:block formatting context)的理解?

  • 一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型

  • 不同类型的 Box,会参与不同的 Formatting Context(决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染,也就是说BFC内部的元素和外部的元素不会互相影响

css定义的权重

// 以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下/// 例子是演示各种定义的权重值:
/*权重为1*/
p{
}
/*权重为10*/
.class1{
}
/*权重为100*/
#id1{
}
/*权重为100+1=101*/
#id1 p{
}
/*权重为10+1=11*/
.class1 p{
}
/*权重为10+10+1=21*/
.class1 .class2 p{
}
// 如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现
登入後複製

display:inline-block 什么时候会显示间隙?(携程)

  • 移除空格、使用margin負值、使用font-size:0、letter-spacing、word-spacing

談談浮動和清除浮動

  • 浮動的框可以向左或向右移動,直到他的外緣碰到包含框或另一個浮動框的邊框為止。由於浮動框不在文件的普通流中,所以文件的普通流的區塊框表現得就像浮動框不存在一樣。浮動的塊框會漂浮在文檔普通流的塊框上

介紹一下標準的CSS的盒子模型?低版IE的盒子模型有什麼不同的?

  • #盒子模型構成:內容(content)、內填(padding)、 邊框(border)、外邊距(margin)

  • #IE8及其以下版本瀏覽器,未宣告DOCTYPE,內容寬高會包含內填和邊框,稱為怪異盒模型(IE盒模型)

  • 標準(W3C)盒子模型:元素寬度= width padding border margin

  • 怪異(IE)盒模型:元素寬度= width margin

  • 標準瀏覽器通過設定css3 的box-sizing: border-box 屬性,觸發「怪異模式」解析計算寬高

box-sizing 常用的屬性有哪些?分別有什麼作用?

  • box-sizing: content-box;  // 預設的標準(W3C)盒子模型元素效果

  • box-sizing : border-box;   // 觸發怪異(IE)盒子模型元素的效果

  • box-sizing: inherit;      //  繼承父元素box-sizing 屬性的值

#CSS選擇器有哪些?

  • id選擇器       #id

  • 類別選擇器       .class

  • 標籤選擇器     p, h1, p

  • 鄰近選擇器     h1 p

  • 子選擇器       ul >

  • 後位選擇器     li a
  • 萬用字元選擇器   *
  • 屬性選擇器     a[rel='external']
  • 偽類別選擇器    a:hover, li:nth-child
CSS哪些屬性可以繼承?哪些屬性不可以繼承?

    可以繼承的樣式:font-size、font-family、color、list-style、cursor
  • 不可繼承的樣式:width、height、border、padding、margin、background
#CSS如何計算選擇器優先?

    相同權重,定義最近者為準:行內樣式> 內部樣式> 外部樣式
  • 含外部載入樣式時,後載入樣式會覆寫其前面的載入的樣式和內部樣式
  • 選取器優先權: 行內樣式[1000] > id[100] > class[ 10] > Tag[1]
  • 在同一組屬性設定中,!important 優先權最高,高於行內樣式
CSS3新增偽類有哪些?

    :root           選擇文件的根元素,等同於html 元素
  • ##:empty          選擇沒有子元素的元素
  • ####################################################################################################################################' #########:target         選取目前活動的目標元素############:not(selector)  選擇除selector 元素意外的元素################## ###:enabled        選擇可用的表單元素############:disabled       選擇已停用的表單元素############:checked   選擇已停用的表單元素############:checked        ###########:after          在元素內部最前面加上內容###
  • :before         在元素內部最後加上內容

  • :nth-child(n)      符合父元素下指定子元素,並在所有子元素中排序第n

  • :nth-last-child(n) 符合父元素下指定子元素,在所有子元素中排序第n,從後向前數

  • :nth-child(odd)

  • :nth-child(even)

  • :nth-child( 3n 1)

  • :first-child

  • #:last-child

  • ##:only- child

  • :nth-of-type(n)      符合父元素下指定子元素,並在同類子元素中排序第n

  • :nth-last-of-type(n) 符合父元素下指定子元素,在同類子元素中排序第n,從後向前數

  • :nth-of- type(odd)

  • :nth-of-type(even)

  • :nth-of-type(3n 1)

  • :first-of-type

  • :last-of-type

  • :only-of- type

  • ::selection     選擇被使用者選取的元素部分

  • :first-line     選取元素中的第一行

  • #:first-letter   選擇元素中的第一個字元

#請列舉幾種隱藏元素的方法

  • #visibility: hidden;   這個屬性只是簡單的隱藏某個元素,但是元素佔用的空間任然存在

  • opacity: 0;           CSS3屬性,設定0可以讓一個元素完全透明

  • position: absolute;   設定一個很大的left 負值定位,使元素定位在可見區域之外

  • #display: none;        元素會變得不可見,且不會再佔用文件的空間。

  • transform: scale(0);  將一個元素設為縮放無限小,元素將不可見,元素原來所在的位置將被保留

  • #

  • height: 0;            將元素高度設為0 ,並消除邊框

  • ##filter: blur(0);      CSS3屬性,將一個元素的模糊度設為0,從而使這個元素「消失」在頁面中
rgba() 和opacity 的透明效果有什麼不同?

    opacity 作用於元素以及元素內的所有內容(包括文字)的透明度
  • rgba() 只作用於元素自身的顏色或其背景色,子元素不會繼承透明效果
css 屬性content 有什麼作用?

    content 屬性專門應用在before/after 偽元素上,用於插入額外內容或樣式
  • ##CSS3有哪些新特性?

新增選擇器    p:nth-child(n){color: rgba(255, 0, 0, 0.75)}
  • #彈性盒模型    display: flex;
  • 多列版面配置      column-count: 5;
  • 媒體查詢      @media (max- width: 480px) {.box: {column-count: 1;}}
  • 個人化字體    @font-face{font-family: BorderWeb; src:url(BORDERW0.eot );}
  • 顏色透明度    color: rgba(255, 0, 0, 0.75);
  • #圓角          border-radius: 5
  • px;
  • 漸變          background:linear-gradient(red, green, blue);
  • 64, 128, 0.3);
  • 倒影          box-reflect: below 2px;
  • 文字装饰       text-stroke-color: red;

  • 文字溢出       text-overflow:ellipsis;

  • 背景效果       background-size: 100px 100px;

  • 边框效果       border-image:url(bt_blue.png) 0 10;

  • 转换

    • 旋转          transform: rotate(20deg);

    • 倾斜          transform: skew(150deg, -10deg);

    • 位移          transform: translate(20px, 20px);

    • 缩放          transform: scale(.5);

  • 平滑过渡       transition: all .3s ease-in .1s;

  • 动画           @keyframes anim-1 {50% {border-radius: 50%;}} animation: anim-1 1s;

请解释一下 CSS3 的 Flexbox(弹性盒布局模型)以及适用场景?

  • Flexbox 用于不同尺寸屏幕中创建可自动扩展和收缩布局

经常遇到的浏览器的JS兼容性有哪些?解决方法是什么?

  • 当前样式:getComputedStyle(el, null) VS el.currentStyle

  • 事件对象:e VS window.event

  • 鼠标坐标:e.pageX, e.pageY VS window.event.x, window.event.y

  • 按键码:e.which VS event.keyCode

  • 文本节点:el.textContent VS el.innerText

请写出多种等高布局

  • 在列的父元素上使用这个背景图进行Y轴的铺放,从而实现一种等高列的假像

  • 模仿表格布局等高列效果:兼容性不好,在ie6-7无法正常运行

  • css3 flexbox 布局: .container{display: flex; align-items: stretch;}

css垂直居中的方法有哪些?

  • 如果是单行文本, line-height 设置成和 height 值

.vertical {
      height: 100px;
      line-height: 100px;
    }
登入後複製
  • 已知高度的块级子元素,采用绝对定位和负边距

.container {
  position: relative;
}
.vertical {
  height: 300px;  /*子元素高度*/
  position: absolute;
  top:50%;  /*父元素高度50%*/
  margin-top: -150px; /*自身高度一半*/
}
登入後複製
  • 未知高度的块级父子元素居中,模拟表格布局

  • 缺点:IE67不兼容,父级 overflow:hidden 失效

.container {
      display: table;
    }
    .content {
      display: table-cell;
      vertical-align: middle;
    }
登入後複製
  • 新增 inline-block 兄弟元素,设置 vertical-align

    • 缺点:需要增加额外标签,IE67不兼容

.container {
  height: 100%;/*定义父级高度,作为参考*/
}
.extra .vertical{
  display: inline-block;  /*行内块显示*/
  vertical-align: middle; /*垂直居中*/
}
.extra {
  height: 100%; /*设置新增元素高度为100%*/
}
登入後複製
  • 绝对定位配合 CSS3 位移

.vertical {
  position: absolute;
  top:50%;  /*父元素高度50%*/
  transform:translateY(-50%, -50%);
}
登入後複製
  • CSS3弹性盒模型

.container {
  display:flex;
  justify-content: center; /*子元素水平居中*/
  align-items: center; /*子元素垂直居中*/
}
登入後複製

圣杯布局的实现原理?

  • 要求:三列布局;中间主体内容前置,且宽度自适应;两边内容定宽

    • 好处:重要的内容放在文档流前面可以优先渲染

    • 原理:利用相对定位、浮动、负边距布局,而不添加额外标签

  .container {
      padding-left: 150px;
      padding-right: 190px;
  }
  .main {
      float: left;
      width: 100%;
  }
  .left {
      float: left;
      width: 190px;
      margin-left: -100%;
      position: relative;
      left: -150px;
  }
  .right {
      float: left;
      width: 190px;
      margin-left: -190px;
      position: relative;
      right: -190px;
  }
登入後複製

什么是双飞翼布局?实现原理?

  • 双飞翼布局:对圣杯布局(使用相对定位,对以后布局有局限性)的改进,消除相对定位布局

  • 原理:主体元素上设置左右边距,预留两翼位置。左右两栏使用浮动和负边距归位,消除相对定位。

.container {
    /*padding-left:150px;*/
    /*padding-right:190px;*/
}
.main-wrap {
    width: 100%;
    float: left;
}
.main {
    margin-left: 150px;
    margin-right: 190px;
}
.left {
    float: left;
    width: 150px;
    margin-left: -100%;
    /*position: relative;*/
    /*left:-150px;*/
}
.right {
    float: left;
    width: 190px;
    margin-left: -190px;
    /*position:relative;*/
    /*right:-190px;*/
}
登入後複製

在CSS样式中常使用 px、em 在表现上有什么区别?

  • px 相对于显示器屏幕分辨率,无法用浏览器字体放大功能

  • em 值并不是固定的,会继承父级的字体大小: em = 像素值 / 父级font-size

解释下什么是浮动和它的工作原理?

  • 非IE浏览器下,容器不设高度且子元素浮动时,容器高度不能被内容撑开。

此时,内容会溢出到容器外面而影响布局。这种现象被称为浮动(溢出)。

  • 工作原理:

    • 浮动元素脱离文档流,不占据空间(引起“高度塌陷”现象)

    • 浮动元素碰到包含它的边框或者其他浮动元素的边框停留

浮动元素引起的问题?

  • 父元素的高度无法被撑开,影响与父元素同级的元素

  • 与浮动元素同级的非浮动元素会跟随其后

列举几种清除浮动的方式?

  • 添加额外标签,例如 <p style="clear:both"></p>

  • 使用 br 标签和其自身的 clear 属性,例如 <br clear="all" />

  • 父元素设置 overflow:hidden; 在IE6中还需要触发 hasLayout,例如zoom:1;

  • 父元素也设置浮动

  • 使用 :after 伪元素。由于IE6-7不支持 :after,使用 zoom:1 触发 hasLayout

清除浮动最佳实践(after伪元素闭合浮动):

.clearfix:after{
    content: "\200B";
    display: table; 
    height: 0;
    clear: both;
  }
  .clearfix{
    *zoom: 1;
  }
登入後複製

什么是 FOUC(Flash of Unstyled Content)? 如何来避免 FOUC?

  • 当使用 @import 导入 CSS 时,会导致某些页面在 IE 出现奇怪的现象:

没有样式的页面内容显示瞬间闪烁,这种现象称为“文档样式短暂失效”,简称为FOUC

  • 产生原因:当样式表晚于结构性html加载时,加载到此样式表时,页面将停止之前的渲染。

  • 等待此样式表被下载和解析后,再重新渲染页面,期间导致短暂的花屏现象。

  • 解决方法:使用 link 标签将样式表放在文档 head

介绍使用过的 CSS 预处理器?

  • CSS 预处理器基本思想:为 CSS 增加了一些编程的特性(变量、逻辑判断、函数等)

  • 开发者使用这种语言进行进行 Web 页面样式设计,再编译成正常的 CSS 文件使用

  • 使用 CSS 预处理器,可以使 CSS 更加简洁、适应性更强、可读性更佳,无需考虑兼容性

  • 最常用的 CSS 预处理器语言包括:Sass(SCSS)和 LESS

CSS优化、提高性能的方法有哪些?

  • 多个css合并,尽量减少HTTP请求

  • 将css文件放在页面最上面

  • 移除空的css规则

  • 避免使用CSS表达式

  • 选择器优化嵌套,尽量避免层级过深

  • 充分利用css继承属性,减少代码量

  • 抽象提取公共样式,减少代码量

  • 属性值为0时,不加单位

  • 属性值为小于1的小数时,省略小数点前面的0

  • css雪碧图

浏览器是怎样解析CSS选择器的?

  • 浏览器解析 CSS 选择器的方式是从右到左

在网页中的应该使用奇数还是偶数的字体?

  • 在网页中的应该使用“偶数”字体:

    • 偶数字号相对更容易和 web 设计的其他部分构成比例关系

    • 使用奇数号字体时文本段落无法对齐

    • 宋体的中文网页排布中使用最多的就是 12 和 14

margin和padding分别适合什么场景使用?

  • 需要在border外侧添加空白,且空白处不需要背景(色)时,使用 margin

  • 需要在border内测添加空白,且空白处需要背景(色)时,使用 padding

抽离样式模块怎么写,说出思路?

  • CSS可以拆分成2部分:公共CSS 和 业务CSS:

    • 网站的配色,字体,交互提取出为公共CSS。这部分CSS命名不应涉及具体的业务

    • 对于业务CSS,需要有统一的命名,使用公用的前缀。可以参考面向对象的CSS

元素竖向的百分比设定是相对于容器的高度吗?

  • 元素竖向的百分比设定是相对于容器的宽度,而不是高度

全屏滚动的原理是什么? 用到了CSS的那些属性?

  • 原理类似图片轮播原理,超出隐藏部分,滚动时显示

  • 可能用到的CSS属性:overflow:hidden; transform:translate(100%, 100%); display:none;

什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?

  • 响应式设计就是网站能够兼容多个终端,而不是为每个终端做一个特定的版本

  • 基本原理是利用CSS3媒体查询,为不同尺寸的设备适配不同样式

  • 对于低版本的IE,可采用JS获取屏幕宽度,然后通过resize方法来实现兼容:

$(window).resize(function () {
  screenRespond();
});
screenRespond();
function screenRespond(){
var screenWidth = $(window).width();
if(screenWidth <= 1800){
  $("body").attr("class", "w1800");
}
if(screenWidth <= 1400){
  $("body").attr("class", "w1400");
}
if(screenWidth > 1800){
  $("body").attr("class", "");
}
}
登入後複製

什么是视差滚动效果,如何给每页做不同的动画?


    • 视差滚动是指多层背景以不同的速度移动,形成立体的运动效果,具有非常出色的视觉体验

    • 一般把网页解剖为:背景层、内容层和悬浮层。当滚动鼠标滚轮时,各图层以不同速度移动,形成视差的

    • 实现原理

      • 以 “页面滚动条” 作为 “视差动画进度条”

      • 以 “滚轮刻度” 当作 “动画帧度” 去播放动画的

      • 监听 mousewheel 事件,事件被触发即播放动画,实现“翻页”效果

    a标签上四个伪类的执行顺序是怎么样的?

    link > visited > hover > active

    • L-V-H-A love hate 用喜欢和讨厌两个词来方便记忆

    伪元素和伪类的区别和作用?

    • 伪元素 -- 在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。

    • 它们只在外部显示可见,但不会在文档的源代码中找到它们,因此,称为“伪”元素。例如:

p::before {content:"第一章:";}
p::after {content:"Hot!";}
p::first-line {background:red;}
p::first-letter {font-size:30px;}
登入後複製
  • 伪类 -- 将特殊的效果添加到特定选择器上。它是已有元素上添加类别的,不会产生新的元素。例如:

a:hover {color: #FF00FF}
p:first-child {color: red}
登入後複製

::before 和 :after 中双冒号和单冒号有什么区别?

  • 在 CSS 中伪类一直用 : 表示,如 :hover, :active 等

  • 伪元素在CSS1中已存在,当时语法是用 : 表示,如 :before 和 :after

  • 后来在CSS3中修订,伪元素用 :: 表示,如 ::before 和 ::after,以此区分伪元素和伪类

  • 由于低版本IE对双冒号不兼容,开发者为了兼容性各浏览器,继续使使用 :after 这种老语法表示伪元素

  • 综上所述:::before 是 CSS3 中写伪元素的新语法; :after 是 CSS1 中存在的、兼容IE的老语法

如何修改Chrome记住密码后自动填充表单的黄色背景?

  • 产生原因:由于Chrome默认会给自动填充的input表单加上 input:-webkit-autofill 私有属性造成的

  • 解决方案1:在form标签上直接关闭了表单的自动填充:autocomplete="off"

  • 解决方案2:input:-webkit-autofill { background-color: transparent; }

input [type=search] 搜索框右侧小图标如何美化?

input[type="search"]::-webkit-search-cancel-button{
  -webkit-appearance: none;
  height: 15px;
  width: 15px;
  border-radius: 8px;
  background:url("images/searchicon.png") no-repeat 0 0;
  background-size: 15px 15px;
}
登入後複製

网站图片文件,如何点击下载?而非点击预览?

<a href="logo.jpg" download>下载</a>
<a href="logo.jpg" download="网站LOGO" >下载</a>

iOS safari 如何阻止“橡皮筋效果”?

  $(document).ready(function(){
      var stopScrolling = function(event) {
          event.preventDefault();
      }
      document.addEventListener('touchstart', stopScrolling, false);
      document.addEventListener('touchmove', stopScrolling, false);
  });
登入後複製

你对 line-height 是如何理解的?

  • line-height 指一行字的高度,包含了字间距,实际上是下一行基线到上一行基线距离

  • 如果一个标签没有定义 height 属性,那么其最终表现的高度是由 line-height 决定的

  • 一个容器没有设置高度,那么撑开容器高度的是 line-height 而不是容器内的文字内容

  • 把 line-height 值设置为 height 一样大小的值可以实现单行文字的垂直居中

  • line-height 和 height 都能撑开一个高度,height 会触发 haslayout,而 line-height 不会

line-height 三种赋值方式有何区别?(带单位、纯数字、百分比)

  • 带单位:px 是固定值,而 em 会参考父元素 font-size 值计算自身的行高

  • 纯数字:会把比例传递给后代。例如,父级行高为 1.5,子元素字体为 18px,则子元素行高为 1.5 * 18 = 27px

  • 百分比:将计算后的值传递给后代

设置元素浮动后,该元素的 display 值会如何变化?

  • 设置元素浮动后,该元素的 display 值自动变成 block

怎么让Chrome支持小于12px 的文字?

  .shrink{
    -webkit-transform:scale(0.8);
    -o-transform:scale(1);
    display:inline-block;
  }
登入後複製

让页面里的字体变清晰,变细用CSS怎么做?(IOS手机浏览器字体齿轮设置)

  -webkit-font-smoothing: antialiased;
登入後複製

font-style 属性 oblique 是什么意思?

  • font-style: oblique; 使没有 italic 属性的文字实现倾斜

如果需要手动写动画,你认为最小时间间隔是多久?

  • 16.7ms 多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔: 1s / 60 * 1000 = 16.7ms

display:inline-block 什么时候会显示间隙?

  • 相鄰的inline-block 元素之間有換行或空格分隔的情況下會產生間距

  • 非inline-block 水平元素設定為inline -block 也會有水平間距

  • 可以藉助vertical-align:top; 消除垂直間隙

  • 可以在父級加font-size :0; 在子元素裡設定所需的字體大小,消除垂直間隙

  • 把li 標籤寫到同一行可以消除垂直間隙,但程式碼可讀性差

overflow: scroll 時不能平滑滾動的問題怎麼處理?

  • 監聽滾輪事件,然後捲動到一定距離時用 jquery 的 animate 實現平滑效果。

一個高度自適應的p,裡面有兩個p,一個高度100px,希望另一個填滿剩下的高度

  • #方案1:
    .sub { height: calc(100%-100px); }

  • 方案2:
    .container { position:relative; }
    .sub { position: absolute; top: 100px; bottom: 0; }

  • #方案3:
    .container { display:flex; flex-direction:column; }
    .sub { flex:1; }


  • #相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

  • 推薦閱讀:

  • avalon前端專案中使用解析

  • React-router v4使用步驟詳解

#

以上是前端面試真題解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入探討HTTP狀態碼460的涵義與使用情況 深入探討HTTP狀態碼460的涵義與使用情況 Feb 18, 2024 pm 08:29 PM

深入解析HTTP狀態碼460的作用和應用場景HTTP狀態碼是Web開發中非常重要的一部分,用來表示客戶端和伺服器之間的通訊狀態。其中,HTTP狀態碼460是較為特殊的狀態碼,本文將深入解析它的作用與應用場景。 HTTP狀態碼460的定義HTTP狀態碼460的具體定義是"ClientClosedRequest",意為客戶端關閉請求。此狀態碼主要用於表示

iBatis與MyBatis:比較與優勢剖析 iBatis與MyBatis:比較與優勢剖析 Feb 18, 2024 pm 01:53 PM

iBatis和MyBatis:區別和優勢解析導語:在Java開發中,持久化是一個常見的需求,而iBatis和MyBatis是兩個廣泛使用的持久化框架。雖然它們有很多相似之處,但也有一些關鍵的區別和優勢。本文將透過詳細分析這兩個框架的特性、用法和範例程式碼,為讀者提供更全面的了解。一、iBatis特性:iBatis是目前較老舊的持久化框架,它使用SQL映射文件

Oracle錯誤3114詳解:如何快速解決 Oracle錯誤3114詳解:如何快速解決 Mar 08, 2024 pm 02:42 PM

Oracle錯誤3114詳解:如何快速解決,需要具體程式碼範例在Oracle資料庫開發與管理過程中,我們常常會遇到各種各樣的錯誤,其中錯誤3114是比較常見的一個問題。錯誤3114通常表示資料庫連線出現問題,可能是網路故障、資料庫服務停止、或連接字串設定不正確等原因導致的。本文將詳細解釋錯誤3114的產生原因,以及如何快速解決這個問題,並附上具體的程式碼

PHP 中點的意思和用法解析 PHP 中點的意思和用法解析 Mar 27, 2024 pm 08:57 PM

【PHP中點的意義和用法解析】在PHP中,中點(.)是常用的運算符,用來連接兩個字串或物件的屬性或方法。在本文中,我們將深入探討PHP中點的意義和用法,並透過具體的程式碼範例加以說明。 1.連接字串中點運算子.在PHP中最常見的用法是連接兩個字串。透過將.放置在兩個字串之間,可以將它們拼接在一起,形成一個新的字串。 $string1=&qu

解析Wormhole NTT:適用於任何Token的開放框架 解析Wormhole NTT:適用於任何Token的開放框架 Mar 05, 2024 pm 12:46 PM

Wormhole在區塊鏈互通性方面處於領先地位,專注於創建有彈性、面向未來的去中心化系統,優先考慮所有權、控制權和無需許可的創新。這個願景的基礎是對技術專業知識、道德原則和社群一致性的承諾,旨在以簡單、清晰和廣泛的多鏈解決方案套件重新定義互通性格局。隨著零知識證明、擴容方案和功能豐富的Token標準的興起,區塊鏈變得更加強大,而互通性也變得越來越重要。在這個不斷創新的應用程式環境中,新穎的治理系統和實用功能為整個網路的資產帶來了前所未有的機會。協議建構者現在正在努力思考如何在這個新興的多鏈

Win11新功能解析:跳過登入微軟帳號的方法 Win11新功能解析:跳過登入微軟帳號的方法 Mar 27, 2024 pm 05:24 PM

Win11新功能解析:跳過登入微軟帳號的方法隨著Windows11的發布,許多用戶發現其帶來了更多的便利性和新功能。然而,有些用戶可能不喜歡將其係統與微軟帳戶綁定,希望跳過這一步驟。本文將介紹一些方法,幫助使用者在Windows11中跳過登入微軟帳戶,並實現更私密、更自主的使用體驗。首先,讓我們來了解為什麼有些用戶不願意登入微軟帳號。一方面,一些用戶擔心他們

解析C語言中的指數函數及範例演示 解析C語言中的指數函數及範例演示 Feb 18, 2024 pm 03:51 PM

C語言中指數函數的詳細解析與範例引言:指數函數是一種常見的數學函數,在C語言中也有對應的指數函數庫函數可以使用。本文將詳細解析C語言中指數函數的使用方法,包括函數的原型、參數、返回值等;並給出具體的程式碼範例,以便讀者能更好地理解並運用指數函數。正文:C語言中的指數函數庫函數math.h中包含了許多與指數相關的函數,其中最常用的是exp函數。 exp函數的原型如

Apache2無法正確解析PHP檔案的處理方法 Apache2無法正確解析PHP檔案的處理方法 Mar 08, 2024 am 11:09 AM

由於篇幅限制,以下是一個簡短的文章:Apache2是常用的Web伺服器軟體,而PHP是廣泛使用的伺服器端腳本語言。在建置網站過程中,有時會遇到Apache2無法正確解析PHP檔案的問題,導致PHP程式碼無法執行。這種問題通常是因為Apache2沒有正確配置PHP模組,或是PHP模組與Apache2的版本不相容所導致的。解決這個問題的方法一般有兩種,一種是

See all articles