TML5 元素有多种维度展示方式,常见以下:
根元素
参考文献:
,介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?
(1)有两种, IE 盒子模型、W3C 盒子模型;
(2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border);
(3)区 别: IE的content部分把 border 和 padding计算了进去;
2,CSS选择符有哪些?哪些属性可以继承?
* 1.id选择器( # myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(li a)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a:hover, li:nth-child)
* 可继承的样式: font-size font-family color, UL LI DL DD DT;
* 不可继承的样式:border padding margin width height ;
3,CSS优先级算法如何计算?
* 优先级就近原则,同权重情况下样式定义最近者为准;
* 载入样式以最后载入的定位为准;
优先级为:
!important > id > class > tag
important 比 内联优先级高
4,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 单选框或复选框被选中。
5,如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
给div设置一个宽度,然后添加margin:0 auto属性
居中一个浮动元素
确定容器的宽高 宽500 高 300 的层
设置层的外边距
让绝对定位的div居中
6,display有哪些值?说明他们的作用。
block 象块类型元素一样显示。
none 缺省值。象行内元素类型一样显示。
inline-block 象行内元素一样显示,但其内容象块类型元素一样显示。
list-item 象块类型元素一样显示,并添加样式列表标记。
table 此元素会作为块级表格来显示
inherit 规定应该从父元素继承 display 属性的值
7,position的值relative和absolute定位原点是?
absolute 生成绝对定位的元素,相对于值不为 static的第一个父元素进行定位。
fixed (老IE不支持) 生成绝对定位的元素,相对于浏览器窗口进行定位。
relative 生成相对定位的元素,相对于其正常位置进行定位。
static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。
inherit 规定从父元素继承 position 属性的值。
8,CSS3有哪些新特性?
新增各种CSS选择器 (: not(.input):所有 class 不是“input”的节点)
圆角 (border-radius:8px)
多列布局 (multi-column layout)
阴影和反射 (Shadow\Reflect)
文字特效 (text-shadow、)
文字渲染 (Text-decoration)
线性渐变 (gradient)
旋转 (transform)
增加了旋转,缩放,定位,倾斜,动画,多背景
transform:\scale(0.85,0.90)\ translate(0px,-30px)\ skew(-9deg,0deg)\Animation:
9,用纯CSS创建一个三角形的原理是什么?
把上、左、右三条边隐藏掉(颜色设为 transparent)
10,一个满屏 品 字布局 如何设计?
简单的方式:
上面的div宽100%,
下面的两个div分别宽50%,
然后用float或者inline使其不换行即可
11,li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
行框的排列会受到中间空白(回车\空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了。
12,为什么要初始化CSS样式。
- 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
- 当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
最简单的初始化方法: * {padding: 0; margin: 0;} (强烈不建议)
淘宝的样式初始化代码:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, b8bf53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }
a { text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
sub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; }
table { border-collapse:collapse; border-spacing:0; }
13,absolute的containing block(容器块)计算方式跟正常流有什么不同?
无论属于哪种,都要先找到其祖先元素中最近的 position 值不为 static 的元素,然后再判断:
1、若此元素为 inline 元素,则 containing block 为能够包含这个元素生成的第一个和最后一个 inline box 的 padding box (除 margin, border 外的区域) 的最小矩形;
2、否则,则由这个祖先元素的 padding box 构成。
如果都找不到,则为 initial containing block。
补充:
1. static(默认的)/relative:简单说就是它的父元素的内容框(即去掉padding的部分)
2. absolute: 向上找最近的定位为absolute/relative的元素
3. fixed: 它的containing block一律为根元素(html/body),根元素也是initial containing block
14,对BFC规范(块级格式化上下文:block formatting context)的理解?
(W3C CSS 2.1 规范中的一个概念,它是一个独立容器,决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。)
一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型。
不同类型的 Box,会参与不同的 Formatting Context(决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染,也就是说BFC内部的元素和外部的元素不会互相影响。
创建规则:
根元素
浮动元素(float不是none)
绝对定位元素(position取值为absolute或fixed)
display取值为inline-block,table-cell, table-caption,flex, inline-flex之一的元素
overflow不是visible的元素
作用:
可以包含浮动元素
不被浮动元素覆盖
阻止父子元素的margin折叠
15,css定义的权重
以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下例子是演示各种定义的权重值:
/*权重为1*/ div{}
/*权重为10*/ .class1{}
/*权重为100*/ #id1{}
/*权重为100+1=101*/ #id1 div{}
/*权重为10+1=11*/ .class1 div{}
/*权重为10+10+1=21*/ .class1 .class2 div{}
如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现
16,移动端的布局用过媒体查询吗?
css的媒体查询允许通过@media标签为特定媒体的浏览器设定样式,其中包含众多筛选,功能强大。
17,使用 CSS 预处理器吗?喜欢那个?
SASS (SASS、LESS没有本质区别,只因为团队前端都是用的SASS)
18,CSS优化、提高性能的方法有哪些?
将样式表放到页面顶部
不使用CSS表达式
不使用@import
不使用IE的Filter
19,在网页中的应该使用奇数还是偶数的字体?为什么呢?
应该是用偶数字体。原因:
像谷歌一些比较流行的浏览器一般会有个默认的最小字体,而且对奇数字体渲染的不太好看
20,元素竖向的百分比设定是相对于容器的高度吗?
是的,元素的百分比设置一般是根据父级元素的宽高决定的,如果父级元素没有宽高百分比是不起作用的
lt;!doctype html>
<html>
<!--
常见问题答疑
Question 1:HTML标签可以大写吗?
大小写都可以,比如<P> 和 <p> 都一样,但是推荐小写,XHTML强制小写(小写肯定对,大写……看情况)
Question 2:有<h7>、<h8>、<h9>……吗?
没有。<h1>最大,<h6>最小.
Question 3:所有HTML标签都需要<></>吗?
不是。有特例,比如<img>是自闭合的,没有</img>;<br>是空元素,需要在开始标签闭合<br/>;<hr> <link> <base>不需要闭合,等等。
Question 4:标签里的属性有先后顺序吗?
没有。比如<img src="" alt="" width="" height="">和<img alt="" width="" height="" src="">效果是一样的。
-->
<head>
<!--
<meta>元素通常用于指定网页的描述,关键词,文件的最后修改时间,作者,和其他元数据。
!元数据也不显示在页面上,但会被浏览器解析。
-->
<meta charset="utf-8">
<!-- <title>标签定义HTML文档的标题 -->
<title>HTML复习 2019-2-3</title>
<!--
<base>定义了所有链接的URL(地址) URL->Uniform Resource Locator(全球资源定位器)
<base href="http://www.baidu.com/"> 所有链接都指向www.baidu.com
-->
<!--
<link>标签定义文档和外部资源的关系,链接到另一个文件,把另一个文件的东西拿过来用
通常引用 css文件 和 js文件
调用样式的优先级:<link>外部文件 < 文件内<style> < 标签内style属性
-->
<link rel="stylesheet" type="text/css" href="filename.css">
<link rel="stylesheet" type="text/javascript" href="filename.js">
<!--
<style>标签定义标签的样式 CSS -> Cascading Style Sheets(层叠样式表)
1.直接定义标签样式 标签名{ 属性1:值; 属性2:值; }
2.定义具有某一ID的标签样式 #id名{ 属性1:值; 属性2:值; }
3.定义某一类(class)的标签样式 .类名{ 属性1:值; 属性2:值; }
#多个元素用 , 隔开
-->
<style>
td,p{
text-align:center;
}
#top{
font-family: Cambria, "Hoefler Text", "Liberation Serif", Times, "Times New Roman", "serif";
}
.show{
background-color: aqua;
}
</style>
<!-- <script>标签用于定义脚本文件(一般就是JavaScript) -->
<script>
alert("lycute!"); //弹出一个消息框
</script>
</head>
<body>
<!--
常用HTML属性:
class 定义一个或多个类名(classname);相当于把不同的标签分到一个组,属于同一类
id 定义元素的唯一id;id是唯一的,不能两个标签用一个,相当于学号,不能重复
style 定义元素的行内样式(inline style);只能修改该标签的样式(大小、颜色、位置等)
-->
<!-- <h1> ~ <h6> 标签定义了六个等级的标题 h->head/headline(标题) -->
<h1 id="top">This is a title level 1</h1>
<h2 class="show">This is a title level 2</h2>
<h3 class="show">This is a title level 3</h3>
<h4 class="show">This is a title level 4</h4>
<h5>This is a title level 5</h5>
<h6>This is a title level 6</h6>
<!--
<p>标签定义段落 p->paragragh(段落)
HTML文档中不能直接敲回车,需要使用 <br/> 标签 br->break(打断?……可能是这个吧)
HTML文档中不能直接打空格,需要使用 nbsp->Non-breaking Space(不间断空格)
!!上两条在<pre>标签内不受影响
<hr>标签用于创建水平线,用于分隔内容 hr->horizontal line(水平线)
<b>和<strong>都可以加粗文字
<i>和<em>都可以定义斜体文字
通常使用<strong>和<em>,因为它们有强调的含义
-->
<p>
This is a paragragh.<br/>
And this is the second line.
</p>
<hr>
<p>
This is another paragragh<br/>
<!--常用文本格式化属性:
<b> 定义粗体文本 b->bold(粗体)
<em> 定义着重文字 em->emphasize(强调)
<i> 定义斜体字 i->italic(斜体)
<small> 定义小号字
<strong>定义加重语气
<sub> 定义下标字 sub->subscript(下标)
<sup> 定义上标字 sup->superscript(上标)
<ins> 定义插入字 ins->insert(插入)
<del> 定义删除字 del->delete(删除)
-->
<strong>I am bold</strong><br/>
<em>I am italic</em><br/>
<small>I am small</small><br/>
<sub>I am subscript</sub>
<sup>I am superscript</sup><br/>
<ins>I am ins</ins><br/>
<del>I am del</del>
</p>
<!--
段落中“计算机”输出标签(一般不用,了解就行)
<code> 定义计算机代码
<kbd> 定义键盘码 kbd->keyboard(键盘)
<samp> 定义计算机代码样本 samp->sample(样例)
<var> 定义变量 var->variate(变量)
<pre> 定义预格式文本 pre->preposition(前置?……这个,应该吧)
-->
<p>
<pre>
<code>
#include"stdio.h"
int main()
{
printf("Hello World!");
}
</code>
</pre>
<kbd>Shift键 VK_SHIFT</kbd><br/>
<samp>system.out.print("hello world");</samp><br/>
</p>
<!--
HTML引文、引用和标签定义
<abbr> 定义缩写 abbr->abbreviation(缩写)
<address> 定义地址
<bdo> 定义文字方向 bdo->Bi-Directional Override
<blockquote> 定义长的引用
<q> 定义短的引用语 q->quote(引用)
<cite> 定义引用、引证
<dfn> 定义一个定义项目 dfn->definition(定义)
-->
<p>
<abbr title="abbreviation">abbr</abbr><br/>
<address>Hebei,Shijiazhuang</address><br/>
<bdo dir="rtl">text direction from right to left</bdo>
<bdo dir="ltr">text direction from left to right</bdo>
<blockqoute cite="http://www.worldwildlife.org/who/index.html">
For 50 years, WWF has been protecting the future of nature. The world's leading conservation organization, WWF works in 100 countries and is supported by 1.2 million members in the United States and close to 5 million globally.
</blockqoute><br/>
<q>This is a short qoute</q><br/>
<cite>This is cite</cite><br/>
<dfn>This is dfn</dfn>
</p>
<!--
<a>标签定义链接 a->anchor(锚点)
href属性定义链接地址 href->hypertext reference(超文本引用)
target属性定义被链接的文档在何处显示
1.可以用来链接到外部地址实现页面跳转功能
2.可以链接到当前页面的某部分实现内部导航功能
3.链接不一定是文本,也可以是图片或者其他HTML元素
-->
<a href="#">This is a null link</a><br/>
<a href="#top">This is a link to h1.</a><br/>
<a href="http://www.baidu.com/" target="_blank">This is a link to baidu</a><br/>
<!--
<img>标签定义图像、图片 img->image(图像)
<img>是一个自闭合标签,不需要也不存在</img>.
src属性指向图像的地址 src->source(来源)
alt属性定义如果图片加载不出来时的替换文字 alt->alter(变更)
height、width属性分别定义图片的 高度 和 宽度,值可以是数字(单位px:像素)或者百分比(相对于源文件) px->pixel(像素)
-->
<img src="http://www.hmttv.cn/uploadfile/2024/0807/20240807024119207.jpg" alt="kirito" height="50%" width="50%">
<!-- HTML 可以通过 <div> 和 <span> 将元素组合起来 -->
<div style="background:skyblue;">
<p>This is a paragragh in a div</p>
<a href="http://www.nelzh.cn/">www.nelzh.cn</a>
</div>
<p>
Ly <span style="background:pink;">cute</span>
</p>
<!--
HTML表格 <table> (table有表格的意思)
<th> 定义表格的标题栏 th -> table headline(我jiao着应该是……)
<tr> 定义表格的行 tr -> table row
<td> 定义表格的列 td -> table ???
<caption> 定义表格标题
<colgroup> 定义表格列的组
<col> 定义用于表格列的属性
<thead> 定义表格的页眉
<tbody> 定义表格的主体
<tfoot> 定义表格的页脚
-->
<table border="1">
<caption>LYCUTE</caption>
<colgroup>
<col span="2" style="background-color:skyblue;">
</colgroup>
<thead>
<tr>
<th>L</th>
<th>Y</th>
</tr>
</thead>
<tbody>
<tr>
<td>LY</td>
<td>CUTE</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>CUTE</td>
<td>LY</td>
</tr>
</tfoot>
</table>
<!--
有序列表<ol> & 无序列表<ul> & 自定义列表<dl>
ol -> ordered list
ul -> unordered list
dl -> ??? list
-->
<ol>
<li>lycute</li>
<li>lycute</li>
<li>lycute</li>
</ol>
<ul>
<li>lycute</li>
<li>lycute</li>
<li>lycute</li>
</ul>
<dl>
<dt>ly</dt>
<dd>-cute</dd>
<dt>cute</dt>
<dd>-ly</dd>
</dl>
<!-- HTML表单<form> 和 输入<input> -->
<form>
<!-- 文本域(Text Fields)-->
Username:<input type="text" name="username"><br/>
<!-- 密码(Password)-->
Password:<input type="password" name="pwd"><br/>
<!-- 多行输入(Textarea)-->
<textarea></textarea><br/>
<!--
下拉列表(select)
<select> 定义了下拉选项列表
<optgroup> 定义选项组
<option> 定义下拉列表中的选项
-->
<select>
<optgroup label="program">
<option value="c">C</option>
<option value="java">Java</option>
<option value="python">python</option>
</optgroup>
<optgroup label="cute or not">
<option value="cute">lycute</option>
<option value="verycute">lyverycute</option>
</optgroup>
</select><br/>
<!-- 单选按钮(Radio Buttons)-->
<input type="radio" name="sex" value="male">Male<br/>
<input type="radio" name="sex" value="female">Female<br/>
<!-- 复选框(Checkboxes)-->
<input type="checkbox" name="program" value="c">C<br/>
<input type="checkbox" name="program" value="java">Java<br/>
<input type="checkbox" name="program" value="python">python<br/>
<!-- 提交按钮(Submit Button)-->
<input type="submit" value="submit">
<!-- 按钮(Button)-->
<input type="button" value="找回密码">
</form>
<!-- <iframe> 标签规定一个内联框架 过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。-->
<center>
<iframe src="http://www.baidu.com/" width="1200" height="400"></iframe>
</center>
</body>
</html>
*请认真填写需求信息,我们会在24小时内与您取得联系。