background-image的设置

CSS背景的设置

对于固定不变的内容,如图标等用背景图。对于可变的内容,图片是和内容相关的,需要点击跳转的用图片
背景颜色

padding会有背景色,而margin没有

背景图片设置
1、background-image: url(http://xxxx.jpg); 服务器上一般是相对路径。在一个高清屏上展示的话,图片大小一般是显示大小的二倍

2、background-position: 0px 0px/center;

3、background-size: 30px 30px; / ie9及以上能用/

4、background-repeat: no-repeat; /repeat, repeat-x, repeat-y/

css sprite(雪碧图|精灵图) 在线工具当加载图片或者icon时,每加载一次就是一个请求,如果有多个回影响服务器响应,浪费网络资源,合成成一张大图,以后每次就可以加载缓存
把多个背景图片合成一张,通过background-position定位图片,减少网络请求

  • 对小icon另一个减少网络请求的方法,将其转化为base64的字符串,不通过请求,直接放到样式里面,不能太大,对实时性要求特别高的网页
    background:url() position repeat;默认是各个数字代表的含义

  • background-size的常用值包括:

    1、auto,默认值,保持背景图片的原始高度和宽度;
    2、length/percentage,设置背景图像的高度和宽度(像素或以父元素的百分比表示)。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 “auto”;
    3、cover,保持图片的原始比例扩展至足够大,以完全覆盖背景区域。背景图像的多余部分可能会超出显示区域;
    5、contain,保持图片的原始比例,元素容器包含进所有的图片内容。

  • 背景图片中用url
    img标签用src

  • 背景色透明和整体透明区别:

背景色:背景的颜色透明整体透明:字体、颜色、图片所有都透明

opacity作用于元素,设置全局透明度,对元素内所有内容的进行透明度设置,会继承父元素的 opacity 属性;
rgba()作用于元素的颜色及背景色透明度设置。
两种都不被IE支持(IE9开始支持)

box-shadow阴影取值

box-shadow可以设置一个盒模型的阴影效果,其取值和对应的含义为:

1
2
3
4
5
6
7
8
box-shadow:inset x-offset y-offset blur-radius spread-radius color

inset(投影方式)
x-offset(X轴偏移量)
y-offset(Y轴偏移量)
blur-radius(阴影模糊半径)
spread-radius(阴影扩展半径)
color(阴影颜色)

inset———默认的情况下是外阴影,如果取其唯一值“inset”,就是将外阴影变成内阴影,也就是说设置阴影类型为“inset”时,其投影就是内阴影

input表单

input表单承载着需要提交到后台的数据,一本为用户输入的信息。

类型主要有:

  • type=”text”: 用于输入文本。placeholder属性(可选)展示的是输入框里的提示,maxlength(可选)限制最大输入长度;
    value:用户输入的内容(值)
    placeholder:占位符,输入框中作提示
  • type=”password”: 用于输入密码,输入的内容显示为星号。
  • type=”radio”: 单选圆圈按钮。注意:name要相同才能实现单选,value要有值

  • type=”checkbox”: 复选框。加checked属性会默认选上。提交时,如果选中(如bike),则bike=on

    自行车汽车

  • type=”textarea”: 文本域,用于输入多行文本
  • type=”hidden”: 隐藏域,用户看不到,用于暂存数据。或者安全性校验

  • 所有的input可以添加属性 disabled来禁用输入
    input都要有name属性

CSS中BFC的作用扩展

之前介绍过BFC的原理和作用,记下介绍一些关于BFC的另外几种使用情况

使用BFC来防止文字环绕

  • 有时候一个浮动div周围的文字环绕着它(如下图中的左图所示)但是在某些案例中这并不是可取的,我们想要的是外观跟下图中的右图一样的。为了解决这个问题,我们可能使用外边距,但是我们也可以使用一个BFC来解决。

文字环绕

-当设置div浮动时,其会产生脱离文档流的效果,其他元素会当做float元素不存在一样,float元素与包含块元素的边框相接,p元素业余边框相接,但是文字会以float元素为界限,环绕其周围,如图所示:

文字环绕

解决办法有两种:

  • 一是设置p元素margin-left为div的宽度,
  • 二是让平元素生成BFC;

在解决之前,让我们再回忆一下W3C标准上是怎么描述的:

In a block formatting context, each box’s left outer edge touches the left edge of the containing block (for right-to-left formatting, right edges touch). This is true even in the presence of floats (although a box’s line boxes may shrink due to the floats), unless the box establishes a new block formatting context (in which case the box itself may become narrower due to the floats).
在BFC中,每个盒子的左外边框紧挨着左边框的包含块(从右到左的格式化时,则为右边框紧挨)。即使在浮动里也是这样的(尽管一个盒子的边框会因为浮动而萎缩),除非这个盒子的内部创建了一个新的BFC(这种情况下,由于浮动,盒子本身将会变得更窄).

根据这些,如果这个p元素创建了一个新的BFC,那么它将不会紧挨着容器块的左边缘。这个可以通过简单的给p元素添加overflow: hidden来实现。这个方法创建了一个新的BFC解决了文字环绕在浮动元素周围的问题。

多列布局中使用BFC:

在多列布局中使用BFC

如果我们正在创建的一个多列布局占满了整个容器的宽度,在某些浏览器中最后一列有时候将会被挤到下一行。会发生这样可能是因为浏览器舍入(取整)了列的宽度使得总和的宽度超过了容器的宽度。然而,如果我们在一个列的布局中建立了一个新的BFC,它将会在前一列填充完之后的后面占据所剩余的空间。

让我们使用多列布局中的三列布局来作为例子。

这是HTML代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<div class="container">
<div class="column">column 1</div>
<div class="column">column 2</div>
<div class="column">column 3</div>
</div>
这是CSS代码:

.column {
width: 31.33%;
background-color: green;
float: left;
margin: 0 1%;
}
.column:last-child {
float: none;
overflow: hidden;
}

在CodePen 上DEMO的运行结果

现在即使容器的宽度会有轻微的变化,但是布局也不会中断。当然,这并不是多列布局的最好选择,但它是防止最后一列下滑问题的一种方法。Flexbox在这种情况下可能是一个更好的解决方案,但是这应该要说明一下在这些情况下元素是如何表现的。

文章参考于下面网页,内容有删改:http://www.w3cplus.com/css/understanding-block-formatting-contexts-in-css.html

CSS中BFC的含义和作用

要理解BFC我们需要一步步的进行分析

Box是CSS布局的基本单位

  Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的。元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染。

  • 让我们看看有哪些盒子:
    • display 属性为 block, list-item, table 的元素,会生成 block-level box。并且参与 block fomatting context;
    • inline-level box:display 属性为 inline, inline-block, inline-table 的元素,会生成 inline-level box。并且参与 inline formatting context;
    • run-in box: css3 中才有,display:run-in;根据上下文决定对象是内联对象还是块级对象。

Formatting context

  Formatting context 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。最常见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context (简称IFC)。

  • CSS3 **中还增加了 GFC 和 FFC。

BFC 定义

  BFC(Block formatting context)直译为”块级格式化上下文”。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

BFC布局规则:

  • 内部的Box会在垂直方向,一个接一个地放置。
  • Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
  • 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  • BFC的区域不会与float box重叠。
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  • 计算BFC的高度时,浮动元素也参与计算,也就是BFC不会发生塌陷,将浮动元素包含在内,即清除浮动的影响

如何生成BFC?

浮动,绝对定位元素,inline-blocks, table-cells, table-captions,和overflow
的值不为visible的元素,(除了这个值已经被传到了视口的时候)将创建一个新的块级格式化上下文

一个BFC是一个HTML盒子并且至少满足下列条件中的任何一个:

  • 根元素
  • float的值不为none
  • position的值不为static或者relative
  • display的值为 table-cell, table-caption, inline-block, flex, 或者 inline-flex中的其中一个
  • overflow的值不为visible

三、BFC的作用及原理

1. 自适应两栏布局

  代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<style>  
body {        
width:300px;    
position: relative;    
}
.aside {        
width: 100px;        
height: 150px;        
float: left;        
background:#f66;
   
}
    
.main {    
height: 200px;       
background:#fcc;   
}
</style>

<body>  
<div class="aside"></div>   
<div class="main"></div>
</body>

显示

  • 根据BFC布局规则第3条:

    每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

因此,虽然存在浮动的元素aslide,但main的左边依然会与包含块的左边相接触。

  • 根据BFC布局规则第四条:

    BFC的区域不会与float box重叠。

我们可以通过通过触发main生成BFC, 来实现自适应两栏布局。

1
2
3
.main {
overflow: hidden;
}

当触发main生成BFC后,这个新的BFC不会与浮动的aside重叠。因此会根据包含块的宽度,和aside的宽度,自动变窄。效果如下:
显示

2. 清除内部浮动

  代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<style>
.par {        
border: 5px solid #fcc;
width: 300px;   
}
  
.child {        
border: 5px solid #f66;
width:100px;        
height: 100px;        
float: left;    
}

</style>

<body>
  
<div class="par">       
<div class="child"></div>     
<div class="child"></div>    
</div>

</body>

页面: 显示

根据BFC布局规则第六条:

计算BFC的高度时,浮动元素也参与计算,清除浮动元素影响

为达到清除内部浮动,我们可以触发par生成BFC,那么par在计算高度时,par内部的浮动元素child也会参与计算,也就是将其包含在内。
  代码:

1
2
3
4
.par {
overflow:
hidden;
}

  效果如下
显示

3. 防止垂直 margin 重叠

  代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<style>
p {
color:#f55;  
background:#fcc;        
width:200px;       
line-height:100px;       
text-align:center;       
margin:100px;    
}
</style>

<body>    
<p>Haha</p>  
<p>Hehe</p>
</body>

页面
显示
两个p之间的距离为100px,发送了margin重叠。  
根据BFC布局规则第二条:

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

我们可以在p外面包裹一层容器,并触发该容器生成一个BFC。那么两个P便不属于同一个BFC,就不会发生margin重叠了。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<style>
.wrap {
overflow: hidden;
}
p {
color: #f55;
background: #fcc;
width: 200px;
line-height: 100px;
text-align:center;
margin: 100px;
}
</style>
<body>
<p>Haha</p>
<div class="wrap">
<p>Hehe</p>
</div>
</body>

显示

总结

其实以上的几个例子都体现了BFC布局规则第五条:

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

因为BFC内部的元素和外部的元素绝对不会互相影响,因此, 当BFC外部存在浮动时,它不应该影响BFC内部Box的布局,BFC会通过变窄,而不与浮动有重叠。同样的,当BFC内部有浮动时,为了不影响外部元素的布局,BFC计算高度时会包括浮动的高度。避免margin重叠也是这样的一个道理。

css中的zoom的用法和作用

Zoom的使用方法:

  • zoom : normal | number
    normal :  默认值。使用对象的实际尺寸
    number :  百分数 | 无符号浮点实数。浮点实数值为1.0或百分数为100%时相当于此属性的 normal 值用白话讲解就是zoom:后面的数字即放大的倍数,可以是数值,也可以是百分比。如:zoom:1,zoom:120%。

    这个属性只要在IE中才起作用,所以很少用到它的实际用途,而最经常用到作用是清除浮动等

css中的zoom的作用

  • 1、检查页面的标签是否闭合 不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题,却仅仅源于这里。毕竟页面的模板一般都是由开发来嵌套的,而他们很容易犯此类问题。
    快捷提示:可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮。   
  • 2、样式排除法 有些复杂的页面也许加载了 N 个外链 CSS 文件,那么逐个删除 CSS 文件,找到 BUG 触发的具体 CSS 文件,缩小锁定的范围。   对于刚才锁定的问题 CSS 样式文件,逐行删除具体的样式定义,定位到具体的触发样式定义,甚至是具体的触发样式属性。   
  • 3、模块确认法 有时候我们也可以从页面的 HTML 元素出发。删除页面中不同的 HTML 模块,寻找到触发问题的 HTML 模块。   
  • 4、检查是否清除浮动 其实有不少的 CSS BUG 问题是因为没有清除浮动造成的。养成良好的清除浮动的习惯是必要的,推荐使用 无额外 HTML 标签的清除浮动的方法(尽量避免使用 overflow:hidden;zoom:1 的类似方法来清除浮动,会有太多的限制性)。   
  • 5、检查 IE 下是否触发 haslayout 很多的 IE 下复杂 CSS BUG 都与 IE 特有的 haslayout 息息相关。熟悉和理解 haslayout 对于处理复杂的 CSS BUG 会事半功倍。推荐阅读 old9 翻译的 《On having layout》(如果无法翻越穿越伟大的 GFW,可阅读 蓝色上的转帖 ) 快捷提示:如果触发了 haslayout,IE 的调试工具 IE Developer Toolbar 中的属性中将会显示 haslayout 值为 -1。   
  • 6、边框背景调试法 故名思议就是给元素设置显眼的边框或者背景(一般黑色或红色),进行调试。此方法是最常用的调试 CSS BUG 的方法之一,对于复杂 BUG 依旧适用。经济实惠还环保^^ 最后想强调一点的是,养成良好的书写习惯,减少额外标签,尽量语义,符合标准,其实可以为我们减少很多额外的复杂 CSS BUG,更多的时候其实是我们自己给自己制造了麻烦。希望你远离 BUG ,生活越来越美好。

post 和 get的区别

post 和 get 方式的区别:

  • 用get提交数据,数据会显示在url里;
  • 用post就不会在url中显示。
  • get受浏览器的限制,最多只能提交1k数据,用于提交少量数据;
  • post理论上没有传输上限,提交的数据大小受服务器的限制,用于提交大量数据。
  • get的请求会被缓存,会被保留在历史记录中,可以被保存成书签,不适合处理敏感数据如密码等;而post以上都不会被保留,安全性较高。
    浏览器默认是用get提交

type=hidden隐藏域的作用

type=hidden隐藏域

  • 基本语法:
    < input type=”hidden” name=”field_name” value=”value”>

作用:

  • 1、隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。

  • 2、有些时候我们要给用户一信息,让他在提交表单时提交上来以确定用户身份,如sessionkey,等等.当然这些东西也能用cookie实现,但使用隐藏域就简单的多了.而且不会有浏览器不支持,用户禁用cookie的烦恼。

  • 3、有些时候一个form里有多个提交按钮,怎样使程序能够分清楚到底用户是按那一个按钮提交上来的呢?我们就可以写一个隐藏域,然后在每一个按钮处加上onclick=”document.form.command.value=”xx””,然后我们接到数据后先检查command的值就会知道用户是按的那个按钮提交上来的。

  • 4、有时候一个网页中有多个form,我们知道多个form是不能同时提交的,但有时这些form确实相互作用,我们就可以在form中添加隐藏域来使它们联系起来。

  • 5、javascript不支持全局变量,但有时我们必须用全局变量,我们就可以把值先存在隐藏域里,它的值就不会丢失了。

  • 6、还有个例子,比如按一个按钮弹出四个小窗口,当点击其中的一个小窗口时其他三个自动关闭.可是IE不支持小窗口相互调用,所以只有在父窗口写个隐藏域,当小窗口看到那个隐藏域的值是close时就自己关掉。

form表单及input标签

  • form表单,用来将用户输入的数据和内容传输到后台服务器,服务器处理完成后将结果传送到客户端
  • 常用的input标签

    type=”text”用来输入文本,默认宽度为20个字符
    type=”password”用来输入密码,字段中的字符会显示为星号或者点
    type=”radio”定义单选按钮(name相同并且定义value值才能实现单选)
    type=”checkbox”定义复选框,加checked属性默认被选上。
    type=”textarea”文本域,用来输入多行文本
    type=”hidden”隐藏域,用户看不到,用于暂存数据或者安全性校验,以便之后被JS提取,比如一个非常重要的信息需要被提交到下一页,但又不能或者无法明示的时候。
    type=”submit”定义提交按钮,提交按按钮会把表单数据发送到服务器
    type=”reset”定义重置按钮,重置按钮会清除表单中的所有数据

  • 在input里,name属性是用来区分表单元素的,浏览器将数据以[name]=[用户输入内容]形式传送给服务器,也就是name用来记录和传送用户数据。

  • <a class="btn" href="#">提交</a><input type="submit" value="提交">

  • <button>提交</button>是一个按钮控件,一般执行js代码实现一定的功能或效果。元素内可以放置图像、文本或者多媒体内容。

W3C:如果在 HTML 表单中使用 button 元素,不同的浏览器会提交不同的值。Internet Explorer 将提交<button><button/> 之间的文本,而其他浏览器将提交 value 属性的内容。(但一般提交数据还是用from表单)

  • <a class="btn" href="#">提交</a>:是一个带有跳转功能的a连接,一般用于链接到另一个网页,“#”表示跳转至本页。
  • <input type="submit" value="提交">:是一个具有提交功能的表单元素,实现将用户输入的数据或信息传递给服务器。

  • radio 通过具有相同值的name属性进行分组,name的值一定要一致,才能有单选效果

  • placeholder 属性,* 占位符,placeholder一般用在文本框或文本域,最为用户输入信息的提示,并不是实际占有文本内容,获取焦点后消失。

html小知识(2)

2、文件路径../main.css、./main.css、main.css有什么区别?

  • ../main.css是指上级目录下的main.css文件;
  • ./main.css、main.css都是指当前目录下的main.css文件

    3、console.log是做什么用的

4、text-align: justify是什么

text-align设置块级元素内文本的对齐方式,分别是:

left 左对齐
right 右对齐
center 居中
justify 两端对齐
inherit 继承父元素的text-align

table中td、th内容默认居中

在div等元素中设置垂直水平居中:

display:table-cell;(IE8以上可以用)
vertical-align:middle;(只对table起作用)
text-align:center;行内元素居中,而且是使包含在内的所有行内元素居中,越级也有效(样式继承)
display:none;没有从DOM树中去除,但是是脱离文档流的消失不显示。
visibility:hidden;隐藏,文档流中依然存在,只是看不见(类似透明了)
opacity:0/1;设置透明度。

标签语义化,< ol>有序列表,当写的内容明显是有排序的,一二三步

< ul>无序列表,并列的相似的东西都可以

语义化:1、合理的分成;

2、合理的标签
3、合理的命名
class命名,尽量小写,多个单词用中横线代替
html写法是先把页面分大区块,每一大块再分成小块,再细化…
html的语义化:选择合适的标签、使用合理的代码结构,便于开发者阅读,同时让浏览器的爬虫和机器很好地解析。

text-align:设置任何的行内元素或文字居中

html写法是先把页面分大区块,每一大块再分成小块,再细化…
html的语义化:选择合适的标签、使用合理的代码结构,便于开发者阅读,同时让浏览器的爬虫和机器很好地解析。

,