发表于: 2018-08-03 22:10:44

1 555


今天完成的任务

a.任务8的环境配置,页面1header的编写

b.任务7深度思考

c.拓展知识


明天的计划

a.任务8-第一个页面的完成 

b.拓展知识


遇到的问题

a.开始遇到的问题就是音频audio的问题,最初是直接把audio放到按钮位置上然后用{opacity: 0}将其隐藏,然后发现因为音频播放器的宽度溢出,产生了页面右边滚动条,于是要处理溢出问题,找到了3种解决方法:

1.添加position: fixed;属性即可

2.将audio宽度缩小到极限最小宽度(过小则会缩成一个串省略号且点击会弹出静音)

3.添加positon: absolute脱离文档流,然后使用transform:rotate(180deg),进行反转,然后添加 opacity:0隐藏即可。


b.任务8的关于bootstrap的不熟悉,在官方文档里学习了1h,明白了它的栅格式样式的使用


收获

1.什么是CSS sprites?


css sprites直译过来就是CSS精灵。通常被解释为“CSS图像拼合”或“CSS贴图定位”。其实就是通过将多个图片融合到一张图里面,然后通过CSS background背景定位技术技巧布局网页背景。这样做的好处也是显而易见的,因为图片多的话,会增加http的请求,无疑促使了网站性能的减低,特别是图片特别多的网站,如果能用css sprites降低图片数量,带来的将是速度的提升。


通俗解释:CSS Sprites其实就是把网页中一些背景图片整合拼合成一张图片中,再利用DIV CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片在布局盒子对象位置。


拓展:什么时候适合用DIV CSS sprites拼合布局


适合:一般小图标素材 

小的图标ico类素材,一般图标很小十多像素几十像素的宽度高度,这种适合拼合成一张图实现sprites 

background背景定位布局。多小ico太多自然加载网页时瞬间会消耗些http iis链接数,但很快加载完又会释放。


不适合:大图大背景 

大背景一般用于网页背景,拼合时,设置为网页背景时所有背景都会显示出来。大图拼接拼合会增大图片大小,网络带宽不好的访问者访问时由于背景图大文件大会加载稍慢些,所以大图不推荐拼接拼合来使用css 


sprites背景定位布局。

sprites适合推荐小结 

一般此sprites拼合布局用于局部小盒子布局不适合大背景大布局背景使用。比如小局部布局小图标背景、小导航背景等DIVCSS布局。


拓展:div css sprites优势与缺点劣势判断选择


优势:

加快网页加载速度 

浏览器接受的同时请求数是10个,如果图片过多会影响整体的视觉效果,而且对于不稳定的网络带宽,加载起来更是噩梦,所以把图片拼接为一张大图,从而加快加载速度,以及加速页面渲染

后期维护简单 

该工具可以直接通过选择图片进行图片的拼接,当然你也可以自己挪动里面的图片,自己去布局你的雪碧图,直接生成代码,简单易用


缺点: 

在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现不必要的背景,如果留空间或拼合位置不合适,在布局时容易出现布局这个盒子对象时,设置背景出现拼合相邻图片,干扰图片的情况;


2.什么是浮动?有哪些清除浮动的方法?


float是css样式中的定位属性,用于设置标签对象(如:<div>标签盒子、<span>标签、<a>标签、<em>标签等html标签)的浮动布局,浮动也就是我们所说标签对象浮动居左靠左(float:left)和浮动居右靠右(float:right)。


(1)为什么需要浮动 

据网上资料显示,以前提出浮动的概念主要是为了解决左边图片,右边文字的需求,后来浮动在网页的布局中应用比较广泛。在学习网页设计时,比如针对于一个花店的导航页,存在许多的图片显示,而有效并且美观的布局样式极为重要,这时float属性就显得尤为重要。

 

(2)什么时候需要清除浮动 

浮动的属性虽然方便使用,但是在使用这种属性时,也存在着一种弊端,那就是当子元素设置了float属性之后,且父元素的高度和宽度没有进行设置,而是由子元素支撑起来,则会导致父元素的高度塌陷(原本的height后来被置为0)。


清除浮动的方式:

a.在父元素内添加冗余元素clear:both; 

具体方法是,在父元素内添加一个div,然后对这个盒子添加样式文件

Clear属性存在的值有left,right,both,none,inherit. 

如果是left,则表示在左侧不允许出现浮动元素,意思就是对父元素中左边的子元素起作用如果设置为both,那就整体考虑,均不可一出现浮动元素的情况。 


b.在父元素中设置属性overflow:hidden||auto


c.after 方法:它就是利用:after和:before来在元素内部插入两个元素块,从而达到清除浮动的效果。其实现原理类似于clear:both方法,只是区别在于:clear在html插入一个div.clear标签,而outer利用其伪类clear:after在元素内部增加一个类似于div.clear的效果。

(.outer {

       zoom:1;

} /*==for IE6/7 Maxthon2==*/

.outer:after {

          clear:both;content:'.';

          display:block;

          width: 0;height: 0;

          visibility:hidden;} /*==for FF/chrome/opera/IE8==*/)


其中clear:both;指清除所有浮动;content: ‘.’; display:block;对于FF/chrome/opera/IE8不能缺少, 


其中content()可以取值也可以为空。visibility:hidden;的作用是允许浏览器渲染它,但是不显示出来,这样才能实现清楚浮动。 

即:


3.rgba和opacity的透明效果有什么不同?display和visiblity有什么区别?


1.什么是RGBA?

rgb大家都熟悉,RGB色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。那现在我们所说的grba又是什么呢?说得简单一点就是在grb的基础上加进了一个通道alpha。

其实他就是来定义透明度的。a的取值范围是0-1之间,不可以是负值,r、g、b三个参数,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0% - 100.0%。超出范围的数值将被截至其最接近的取值极限。并非所有浏览器都支持使用百分数值。

我们平时用的较多的是16进制颜色,例如黑色#000000;白色#FFFFFF,这些是16进制表示的颜色,如果使用RGB颜色表示就是 rgb(0, 0, 0)与rgb(255,255,255),其实本质上是一样的,只是一个是16进制表示的,一个是二进制表示的(RGB颜色)。透明度还支持透明渐变。这对于制作一些特殊的效果是相当有用的


2.什么是OPACITY?

也是一个css3属性,该属性用于设置元素的不透明度级别,所有的浏览器都支持这个属性。

opacity 中文翻译为:不透明度。语法:opacity:value | inherit ;

取值说明: value 不透明度,从0.0(完全透明)到1.0(完全不透明)。


3.什么是DISPLAY:NONE

将元素与其子元素从普通文档流中移除。这时文档的渲染就像元素从来没有存在过一样,也就是说它所占据的空间被折叠了。元素的内容也会被屏幕阅读所忽略。隐藏起来。


4.什么是VISIBLITY

w3school上给的定义 定义和用法 visibility 属性规定元素是否可见。 提示:即使不可见的元素也会占据页面上的空间。请使用 "display" 属性来创建不占据页面空间的不可见元素


RGBA与OPACITY的区别


opacity会继承父元素的opacity 属性,而RGBA设置的元素的后代元素不会继承不透明属性。简单来说就是opacity作用于元素和元素所有内容的透明

rgba相对于opacity还是技高一筹的,当然只要是涉及颜色的,都可以用rgba来设置。

DISPLAY 和VISIBILITY有什么区别?


ISPLAY 和VISIBILITY有什么区别?


1.主要在于visibility:hidden占据空间,无法点击,另一个display:none;不占据空间,无法点击。有一句话是这么说的,display:none会真的把你弄没,而visibility:hidden则仅仅是为你披上一件隐身衣而已,你还在原来的地方呆着。设置透明值(opcity),占据空间,可以点击。 该方法并非真正意义上的隐藏,只是将元素设为透明,但是只适用于文字类的元素,不适用于input,因为即使看不到,可以点击相应input。


2.就是displayde回流与渲染visibility没有这个影响前端性能的问题。回流则是重新使该页面渲染一次,从而影响性能。


3.株连性,所谓“株连性”,就是如果祖先元素遭遇某祸害,则其子子孙孙无一例外也要遭殃。display:none就是“株连性”明显的声明:一旦父节点元素应用了display:none,父节点及其子孙节点元素全部不可见,而且无论其子孙元素如何不屈地挣扎都无济于事.我们给一个父元素应用visibility:hidden,则其子孙后代也都会全部不可见。如果子孙元素应用了visibility:visible,那么这个子孙元素又会刘谦般地显现出来。

对比总结: display:none是个相当惨无人道的声明,子孙后代全部搞死(株连性),而且连块安葬的地方都不留(不留空间),导致全体民众哗然(渲染与回流)。 visibility:hidden则具有人道主义关怀,虽然不得已搞死子孙,但是子孙可以通过一定手段避免(伪株连性),而且死后全尸,墓地俱全(占据空间),国内民众比较淡然(无渲染与回流)。


4.描述下z-index和叠加上下文是如何形成的?

先了解一下z-index的基本信息:

在W3C是这样描述的:每个元素都具有三维空间位置,除了水平和垂直位置外,还能在 "Z轴" 上层层相叠、排列。元素在 "Z轴" 方向上的呈现顺序,由层叠上下文和层叠级别决定。在文档中,每个元素仅属于一个层叠上下文。元素的层叠级别为整型,它描述了在相同层叠上下文中元素在 "Z轴" 上的呈现顺序。同一层叠上下文中,层叠级别大的显示在上,层叠级别小的显示在下,相同层叠级别时,遵循后来居上的原则,即其在HTML文档中的顺序。不同层叠上下文中,元素呈现顺序以父级层叠上下文的层叠级别来决定呈现的先后顺序,与自身的层叠级别无关。


z-index语法:

z-index: auto(自动,默认值) | integer(整数) |? inherit (继承)

z-index 接受的属性值为:关键字auto和整数,整数可以是负值。


需要注意的是 z-index 虽然很给力,却只能应用于定位元素(即设置了 position 属性为非 static 值),其它情况下,z-index 将被忽略。

在一个层叠上下文,所有的元素根据规则从下到上排列,分成了七个等级:

1、背景和边框 — 形成层叠上下文的元素的背景和边框。 层叠上下文中的最低等级。

2、负z-index值 — 层叠上下文内有着负z-index值的子元素。

3、块级盒 — 文档流中非行内非定位子元素。

4、浮动盒 — 非定位浮动元素。

5、行内盒 — 文档流中行内级别非定位子元素。

6、z-index: 0 — 定位元素。这些元素形成了新的层叠上下文。

7、正z-index值 — 定位元素。层叠上下文中的最高等级


5.如果是在手机上查看投票页,没有hover效果时应该怎么办?


手机端有他特殊touch事件。touchstart,touchmove, touchend.

首先,经试验发现,设置的:hover在Android系统上点击会出现, 但是需要再次点击才会消失;IOS系统上点击无法出现;

然后来看一下解决的方法...

手机虽然没有鼠标,但是咱有触摸事件啊!

一开始触摸事件是ios版Safari浏览器为了向开发人员传达一些信息新添加的事件。 因为ios设备既没有鼠标也没有键盘,所以在为移动Safari浏览器开发交互性网页的时候, PC端的鼠标和键盘事件是不够用的。

在iPhone 3G发布的时候,其自带的移动Safari浏览器就提供了一些与触摸(touch)操作相关的新事件。 随后,Android上的浏览器也实现了相同的事件。触摸事件(touch)会在用户手指放在屏幕上面的时候、 在屏幕上滑动的时候或者是从屏幕上移开的时候触发。

1.touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。

2.touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间, 调用preventDefault()事件可以阻止滚动。

3.touchend事件:当手指从屏幕上离开的时候触发。

4.touchcancel事件:touchcancel,是在拖动中断时候触发。

(PS:主要的是前三个触摸事件)


拓展:

fixed:固定定位(溢出部分会自动隐藏)

absolute:绝对定位

区别很简单:

1、没有滚动条的情况下没有差异

2、在有滚动条的情况下,fixed定位不会随滚动条移动而移动,而absolute则会随滚动条移动


meta信息中常有这么一句:

<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">

这里的chrome=1不是说IE的技术增强了可以模拟Chrome浏览器,而是与谷歌开发的Google Chrome Frame(谷歌内嵌浏览器框架GCF)有关。这个插件可以让用户的IE浏览器外观不变,但用户在浏览网页时实际上使用的是Chrome的内核,并且支持Windows XP及以上系统的IE6/7/8。

而上文提到的那个meta标记,则是在是安装了GCF后,用来指定页面使用chrome内核来渲染。 

GCF下载地址: http://code.google.com/intl/zh-CN/chrome/chromeframe/ (ie打开)

安装完成后,如果你想对某个页面使用GCF进行渲染,只需要在该页面的地址前加上 gcf: 即可,例如: gcf:http://cooleep.com 

但是如果想要在开发时指定页面默认首先使用GCF进行渲染,如果未安装GCF再使用IE内核进行渲染,该如何进行呢? 

就是使用这个标记。



返回列表 返回列表
评论

    分享到