跳至主要內容

HTML/CSS

kangduu大约 8 分钟

在HTML中如何做SEO优化?

  1. h标签的使用,h1标签只能出现一次,它是当前页面的主标题,对爬虫的吸引力是最强的
  2. strong标签的使用,strong标签对关键词的强调作用仅次于h标签,用于加粗段落标题或是重点关键词
  3. head标签内容【SEO的重点】
    • <title>网站SEO标题</title>
    • <meta name="descriptiion" content="网站描述"/>
    • <meta name="keywords" content="网站关键词/">
  4. <a href="链接地址" title="链接说明">链接关键词</a>,站内丰富的超链接会方便爬虫,体现网站的深度和广度
  5. <img src="图片链接地址" alt="图片说明"/>,这是针对网页中图片的,当然也可以写成<img src="图片链接地址"title="图片说明"/>
  6. <div id="copyright">版权部分加上网站名称和链接</div>
  7. HTML优化要富于逻辑,重点明确,层次分明,这也是符合SEO精神的

HTML页面性能优化

  • html

    • 语义化标签
    • 加载顺序:
      • css放head里面(用户看到顺畅页面);
      • js放尾部(会阻塞dom渲染,且dom树没搭建好时,js里面的dom操作会有问题)
    • 减少页面请求:合并img,合并css,避免使用@import方式引入css文件
    • 减少文件大小:
      • 使用图片精灵;
      • 减少img文件大小,选用合适的格式并且用工具进行压缩;
      • 删除不必要的标签。
  • css

    • 选择器:越简单越短越好,同样的样式进行选择器合并

    • css值缩写:margin等,值为0的省略单位,

      font:normal small-caps bold 14px/1.5em '宋体',arial,verdana;
      /*等价于:*/
      font-style:normal;
      font-variant:small-caps;
      font-weight:bold;
      font-size:14px;
      line-height:1.5em;
      font-family:'宋体',arial,verdana;
      
    • 减少文件大小(压缩):YUI Compressor,cssmin

    • 少用耗性能的属性:expresion,border-radius,filter,box-shadow,gradients等

    • 图片设置宽高,不要缩放,减少浏览器的回流和重绘。

    • 所有表现用css实现

    • 模块化open in new window

    • 命名规范、语义化

    • 尽量减少hack

    由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!

  • javascript

    • 页面懒加载(图片等资源)
    • 图片的预加载
    • 通过事件委托等减少dom操作
    • 模块化open in new window(CommonJS、AMD/CMD、ES6)
    • 动态列表(用最少的DOM元素实现)
    • ...

初始化一个div标签,默认宽度(width) 是多少?

  • 默认情况下: 继承父级元素的宽度,高度默认为 0(不设置的情况由子元素撑开)
  • 设置了浮动:如果父级设置了浮动,子元素也设置了浮动,那么宽度(width)为 0

首屏,白屏时间如何计算?

准备

  1. 加载是并行的,执行是串行的;
  2. 执行需要等待加载完;
  3. 浏览器的执行是串行的

llinkopen in new window

BFC(块级格式化上下文)

  • 思路

    • BFC是什么
    • 触发条件
    • 可以做些什么
  • 什么是BFC

    块级格式化上下文 (Block Formatting Context) 。

    针对可视化布局提供一个环境,在此环境,决定元素如何对其内容进行定位和布局以及与其他元素之间的关系,环境与环境之间彼此独立(互不影响)。

    注意:只要元素可以触发BFC,就无需清楚浮动(正确)

  • 触发

    • 根元素 或 其它包含它的元素
    • 浮动元素 (元素的 float 不是 none)
    • 绝对定位元素 (元素具有 positionabsolutefixed)
    • 内联块 (元素具有 display: inline-block)
    • 表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
    • 表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
    • 具有overflow 且值不是 visible 的块元素
    • 弹性盒(flexinline-flex
    • display: flow-root
    • column-span: all
  • 约束规则

    • 内部的盒会在垂直方向一个接一个排列(可以看作BFC中有一个的常规流)
    • 处于同一个BFC中的元素相互影响,可能会发生外边距重叠
    • 每个元素的margin box的左边,与容器块border box的左边相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此
    • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
    • 计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算
    • 浮动盒区域不叠加到BFC上
  • 解决问题

    • 垂直外边距重叠问题(margin塌陷)
    • 去除浮动
    • 自适用两列布局(float + overflow

CSS选择器以及这些选择器的优先级

  • !important
  • 内联样式(1000)
  • ID选择器(0100)
  • 类选择器/属性选择器/伪类选择器(0010)
  • 元素选择器/关系选择器/伪元素选择器(0001)
  • 通配符选择器(0000)

简述 display: flex ( Flex 布局 )

  • 思路
  1. Flex的基本概念,结构组成
  2. 列举一些属性(常用的)
  3. 使用Flex布局案例(常用的)

table布局?div布局? 二者的区别?

浮动元素高度塌陷问题?

  • 思路
  1. 解决高度塌陷问题的两种类型:clearBFC
  2. 具体方案
    • 追加元素并设置clear属性
    • css样式插入伪元素
    • BFC (Bootstrap如何做的)
  • 实操
  • 思考
    • 高度塌陷产生的原因是什么?
    • clear 属性清除浮动的原理是什么?
    • 采用 BFC 解决高度塌陷和clear 属性清除浮动相比的优势是什么?

伪元素、伪类、二者的区别### CSS 中的 backgroundbackground-image 属性可以和 background-color 属性一起生效么?

img后缀

  • svg:图片在放大或改变尺寸的情况下其图形质量不会有所损失,适合小图标
  • png:无损压缩,更适合需要高保真的修饰图片;
  • jpeg:支持高动态范围成像,支持图片透明度,色彩丰富的照片;
  • gif:可插入多帧,从而实现动画效果,可设置透明色以产生对象浮现于背景之上的效果。

img属性alt和title的区别

background-color 属性可以覆盖 background-image 属性吗?

reset.css?为什么要使用?(初始化CSS的作用与好处?)

​ 重置的目的不是清除浏览器的默认样式,这仅是部分工作。我们希望让默认样式在所有浏览器基本保持一致,从而减少默认样式有可能带来的问题。我们应该清楚,清除和重置是紧密不可分的。(因为浏览器的品种很多,每个浏览器的默认样式也是不同的,所以定义一套初始化css可以使各浏览器的默认样式统一。以便项目在不同浏览器上的效果是一致的)

CSS 中哪些属性可以继承?

可继承的属性open in new window

什么是css的选择器?

​ CSS是一种用于屏幕上渲染html,xml等一种语言,CSS主要是在相应的元素中应用样式,来渲染相对应用的元素,那么这样我们选择相应的元素就很重要了,如何选择对应的元素,此时就需要我们所说的选择器。在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。选择器主要是用来确定html的树形结构中的DOM元素节点

Web标准

Web标准不是某一个标准,是由W3C和其他标准化组织指定的一系列标准的集合,主要包括结构(Structure)、表现(Presentation)和行为(Behavior)三个方面。

  • 好处
  1. 让Web的发展前景更广阔
  2. 内容能被更广泛的设备访问
  3. 更容易被搜索引擎搜索
  4. 降低网站流量费用
  5. 使网站更易于维护
  6. 提高页面浏览速度

CSS引入的方式有哪些? link和@import的区别?

1. link可以用js修改,@import不可以
2. link比@import先载入
3. @import只能引入css
4. link兼容性高

什么是css sprites(精灵)

https://www.cnblogs.com/yangguoe/p/8466117.htmlopen in new window

加速的关键,不是降低质量,而是减少个数。

css sprites 适用范围:

1,需要通过降低http请求数完成网页加速。

2,网页中含有大量小图标。或者,某些图标通用性很强。

3,网页中有需要预载的图片。主要是a与a:hover背景图这种关系的。如果a与a:hover的背景图分别加载,那么,就会出现用户鼠标移到某个按钮上,按钮的背景突然消失再出来,产生“闪烁”,如果按钮文字色与大背景相同或相近,就更囧了,有可能让人产生按钮“消失”了的错觉。

CSS中的 vertical-alignopen in new window 属性值?什么情况下生效?

  • vertical-align 生效的前提

    1. 内联元素 span strong em img button input 等;
    2. display 属性值为inline inline-block inline-tabletable-cell;

    特别注意:浮动和绝对定位会让元素块状化,不会生效。

  • vertical-align 的属性值:

    线类:baseline top middle bottom

    文本类:text-toptext-bottom

    上标下标类:subsuper

    数值百分比类:20px、2em、20%等(对于基线往上或往下偏移)

提示

负值 相对于基线往下移,正值 往上移;

vertical-align:baseline 等同于 vertical-align:0 ;

巧用正负值。