zoukankan      html  css  js  c++  java
  • HTML&CSS面试高频考点(一)

    1. 行内元素/块级元素 非替换元素/替换元素

    行内元素(内联元素):a, abbr(缩写), acronym(只取首字母缩写), b, bdo(文本方向), big, br, cite(引用), code, em(强调), i, img, input, label, q(短引用), select, small, span, strong, sub(下标), sup(上标), textarea...

    块级元素:address, caption, dd(定义列表的定义条目), div, dl(定义列表), dt(定义列表中的项目), form, h1~h6, hr, li, ol, ul, p(段落), pre(预格式化), table, tbody, td, tr, blockquote(段落缩进), marquee(滚动文本)... 

    可变元素(根据上下文来决定是哪一种元素):button, map, object......

    =>行内元素与块级元素的区别

    1. 两者可以通过display属性相互转换(inline/block);
    2. 行内元素和其他的行内元素会在同一行排列,块级元素则独占一行,垂直向下排列。若想让块级元素水平排列,可以使用浮动(float: left/right);
    3. 行内元素不可以设置宽高,宽高随文本内容变化,但可以设置行高(line-height),对行内非替换元素设置margin/padding上下无效,左右有效。块级元素可以设置宽高,同时可以设置内外边距;
    4. 块级元素可以包含行内元素和块级元素,行内元素不能包含块级元素,只能容纳文本和行内元素。

     替换元素:浏览器根据元素的标签和属性,来决定元素的具体显示内容,其内容不受CSS视觉格式化模型控制。如img, input, textarea, select, object.....

    =>替换元素与非替换元素的区别

    1. 替换元素通常有固有的尺寸(高度/宽度/比率);
    2. CSS渲染模型不考虑替换元素内容的渲染。使用CSS的content属性插入的对象是匿名替换元素;
    3. 替换元素可以增加行框高度,但不影响line-height。如果想要替换元素居中,可以设置line-height = height;
    4. 替换元素本质上是inline-block,即padding和margin都有效;
    5. 行内替换元素设置padding会撑大父元素,而行内非替换元素设置padding只能扩大范围,无法撑大父元素,不影响line-height。

    2. img的title和alt属性(全局属性)

    • alt:图片加载失败时显示的替代文字(img的属性),搜索引擎通过alt来判断图片意思
    • title:对图片的描述和进一步说明(HTML5全局属性)

     HTML5常用全局属性

    class, accesskey(访问元素的键盘快捷键), id, title, lang, style, tabindex(Tab键控制次序),

    contextmenu(上下文菜单), contenteditable(是否允许编辑), hidden, draggable(是否允许拖动), dropzone(被拖动到元素中会发生的事情), spellcheck(是否进行拼写或语法检查) 

    *加粗表示为HTML5新增

    3. meta标签

    meta是head部的一个辅助性标签,提供HTML文档的元数据。供机器解读。

    =>作用

    1. 搜索引擎优化(SEO);
    2. 定义页面使用语言;
    3. 自动刷新并指向新的页面;
    4. 实现网页转换时的动态效果;
    5. 控制页面缓冲;
    6. 网页定级评价;
    7. 控制网页显示的窗口。

     可选属性:

    http-equiv 添加服务器发送到浏览器的http头部内容

    charset(文字及语言)

    expires(设置网页过期时间)

    refresh(设置网页特定时间内自动刷新并跳转到新页面url)

    pragma(禁止浏览器从本地计算机访问页面内容)

    ......

    name 用于描述网页,其属性值content便于搜索引擎查找/分类信息

    keywords(关键词)

    description(主要内容)

    robots(告诉搜索机器人哪些页面需要索引)

    ......

    scheme 指定用来翻译属性值的方案  
    property="og" 同意网页内容可以被其他社会化网站引用

     


     常用的meta标签

    //声明文档使用的字符编码,一定要写在第一行解决乱码问题
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    //禁止百度自动转码
    <meta http-equiv="Cache-Control" content="no-siteapp" />
    
    //SEO优化
    <!-- 页面关键词 keywords -->
    <meta name="keywords" content="your keywords">
    
    <!-- 页面描述内容 description -->
    <meta name="description" content="your description">
    
    <!-- 定义网页作者 author -->
    <meta name="author" content="author,email address">
    
    <!-- 定义网页搜索引擎索引方式,通常有如下几种取值:none,noindex,nofollow,all,index和follow。 -->
    
    <meta name="robots" content="index,follow">
    
    //移动端页面布局
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    //Microsoft Internet Explorer浏览器
    <!-- 优先使用最新的ie版本 -->
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    
    <!-- 是否开启cleartype显示效果 -->
    <meta http-equiv="cleartype" content="on">
    
    //Google Chrome
    <!-- 优先使用最新的chrome版本 -->
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    
    <!-- 禁止自动翻译 -->
    <meta name="google" value="notranslate">
    
    //移动端
    <!-- 避免IE使用兼容模式 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    <!-- QQ强制竖屏 -->
    <meta name="x5-orientation" content="portrait">
    
    <!-- QQ强制全屏 -->
    <meta name="x5-fullscreen" content="true">

    4. DOCTYPE声明(标准模式/兼容模式)

    <!doctype>声明必须处于HTML文档的头部,在<html>标签之前,告知浏览器使用什么文档标准解析这个文档。如果DOCTYPE不存在或者格式不正确会导致文档以兼容模式出现。

    <!doctype>不是一个HTML标签,而是一个高告诉浏览器当前HTML版本的指令。

    HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为。而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。(这是为什么HTML5只需要写<!DOCTYPE HTML>就够了)

    *SGML:Standard Generalized Markup language(简称“通用标言”),是一种定义电子文档结构和描述其内容的国际标准语言。

    *DTD:Document Type Definition(文档类型定义),是一种特殊文档,它规定、约束符合SGML或SGML子集可扩展标示语言(XML)规则的定义和陈述。


    标准模式与兼容模式的区别

    标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。
    兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。 

    具体体现:

    • width

    在严格模式中 :width是内容宽度 ,元素真正的宽度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width +  margin-right;

    在兼容模式中 :width = width + padding + border(即除了外边距margin)。

    • 兼容模式下可设置百分比的高度和行内元素的高宽

    在Standards模式下,给span等行内元素设置wdith和height都不会生效,而在兼容模式下,则会生效。

    在Standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的。

    • 用margin:0 auto设置水平居中在IE下会失效

    使用margin:0 auto在Standards模式下可以使元素水平居中,但在兼容模式下却会失效(用text-align属性解决)。

    • 兼容模式下Table中的字体属性不能继承上层的设置,white-space:pre会失效,设置图片的padding会失效

    5. script标签的defer和async

    作用:如果在文档中间出现<script>标签,浏览器会立刻加载并执行相应的脚本,这样会阻塞后续文档的加载(白屏)。

    • defer:作用是表明脚本在执行时不会影响页面构造,即脚本会被延迟到整个页面都解析完毕(DOMContentLoaded事件触发执行之前)再运行(立即下载,延迟执行);
    • async:只适用于外部脚本,不保证按照顺序执行。目的是异步加载其他内容。

     =>defer和async的区别

    1. async相当于单独开了一个进程去独立加载和执行脚本,而defer和将<script>标签放到<body>底部是一样的效果;
    2. 建议的方法仍是写到底部,如果需要调用独立库时可以使用async,若脚本必须写在头部内可以使用defer;
    3. 由于兼容性问题,async在IE<=9时不支持,故有时候两个属性都指定,意味着在async不支持时启用defer。
  • 相关阅读:
    Java实现各种内部排序算法
    Java实现堆排序(大根堆)
    Java对象的序列化和反序列化
    Java实现链式存储的二叉查找树(递归方法)
    337. House Robber III(包含I和II)
    318. Maximum Product of Word Lengths
    114. Flatten Binary Tree to Linked List
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    96. Unique Binary Search Trees(I 和 II)
  • 原文地址:https://www.cnblogs.com/hermionepeng/p/13194297.html
Copyright © 2011-2022 走看看