发表于: 2018-05-18 23:42:26

1 433


今天完成的事情:任务13深度思考,了解bfc,完成任务13
明天计划的事情:用css写轮播图,栅格,
遇到的问题:伪类选择器组合兄弟选择器之后,选择多个兄弟使用逗号连接,伪类选择器没有选到后面的元素,而是直接应用了样式。

如下例,main1 hover时变色,main2直接为红色。

.main:hover ~ .main1,.main2{
background: red;
}

解决办法:伪类选择器组合兄弟选择器后不要用逗号连接其他希望选择的兄弟了。


收获:

一、任务13深度思考

1.如何做默认样式重置?resetting 和 normalizing 之间有什么区别?

什么是CSS RESET?

在HTML标签在浏览器里有默认的样式,例如 p 标签有上下边距,strong标签有字体加粗样式,em标签有字体倾斜样式。不同浏览器的默认样式之间也会有差别,例如ul默认带有缩进的样式,在IE下,它的缩进是通过margin实现的,而Firefox下,它的缩进是由padding实现的。在切换页面的时候,浏览器的默认样式往往会给我们带来麻烦,影响开发效率。所以解决的方法就是一开始就将浏览器的默认样式全部去掉,更准确说就是通过重新定义标签样式。“覆盖”浏览器的CSS默认属性。最最简单的说法就是把浏览器提供的默认样式覆盖掉!这就是CSS reset。

CSS Reset的作用:

CSS Reset让各个浏览器的CSS样式有一个统一的基准,而实现这一基准最主要的方式就是“清零”


什么是NORMALIZE?

Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上 提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css 是一种现代的、为HTML5准备的优质替代方案。Normalize.css现在已经被 用于Twitter Bootstrap、HTML5 Boilerplate、GOV.UK、Rdio、CSS Tricks 以及许许多多其他框架、工具和网站上。

normalize创造的目的:

保护有用的浏览器默认样式而不是完全去掉它们


resetting 和 normalizing 之间有什么区别?

1. Normalize.css 保护了有价值的默认值

Reset通过为几乎所有的元素施加默认样式,强行使得元素有相同的视觉效果。 相比之下,Normalize.css保持了许多默认的浏览器样式。这就意味着你不用再 为所有公共的排版元素重新设置样式。当一个元素在不同的浏览器中有不同的默认值时, Normalize.css会力求让这些样式保持一致并尽可能与现代标准相符合。

2. Normalize.css 修复了浏览器的bug

它修复了常见的桌面端和移动端浏览器的bug。 这往往超出了Reset所能做到的范畴。关于这一点, Normalize.css修复的问题包含了HTML5元素的显示设置、 预格式化文字的font-size问题、在IE9中SVG的溢出、许多 出现在各浏览器和操作系统中的与表单相关的bug。

3. Normalize.css 不会让你的调试工具变的杂乱

使用Reset最让人困扰的地方莫过于在浏览器调试工具中大段大段的继承链, 如下图所示。在Normalize.css中就不会有这样的问题,因为在我们的准则中 对多选择器的使用时非常谨慎的,我们仅会有目的地对目标元素设置样式。

4. Normalize.css 是模块化的

这个项目已经被拆分为多个相关却又独立的部分, 这使得你能够很容易也很清楚地知道哪些元素被设置了特定的值。 因此这能让你自己选择性地移除掉某些永远不会用到部分(比如表单的一般化)。

5. Normalize.css 拥有详细的文档

Normalize.css的代码基于详细而全面的跨浏览器研究与测试。 这个文件中拥有详细的代码说明并在Github Wiki中有进一步的说明。 这意味着你可以找到每一行代码具体完成了什么工作、为什么要写这句代码、 浏览器之间的差异,并且你可以更容易地进行自己的测试。

总得来说,CSS Reset 是革命党 ,CSS Reset 里最激进那一派提倡不管你有用没用, 通通给我脱了衣服,于是 *{margin:0;} 等等运动,把人家全拍了。看似是众生平等了, 实则是浪费了资源又占不到便宜,有求于人家的时候还得给加回去,实在需要人家的默认 样式了怎么办?自己看着办吧。

Normalize.css 是改良派。他们提倡,各个元素都有其存在的道理, 简单粗暴地一视同仁是不好的。谁都有谁的作用,给他们制定个规范,确保他们 在任何浏览器里都干好自己的活儿就好了。


2.任务13所学到的架构知识,和任务12所学到的规范有没有冲突的地方?如果有冲突,你会选择哪种方式?为什么?

在写sass频繁使用嵌套,但是在架构中又说不要使用嵌套而是使用复杂的类名。

规范中说使用语义化的命名,架构中又说不要语义化命名要面对属性命名提高代码的复用性。


3.移动端有哪些常见布局方式?

1:响应式布局。

    可以用px作为像素,网页进行平铺。全屏的用100%。高度可以用px写死,宽度可以用百分比。不管网页怎么拉伸,高度不变,宽度会相应的扩大。

2:em/rem  方式布局。

可以设置好html,body的字体大小,然后用不同的尺寸手机访问的时候,我们可以去修改body的字体大小,网页(网页的内容用rem设置宽度、高度)的之内容会自动进行缩放。

3.可以按照设计稿的宽 高 来写css,然后通过js判断不同尺寸屏幕,修改<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> 里面 scale的比例大小。

比如设计稿是 640 * 1136

我们可以按 640宽度写网页 也可以按320宽度写网页。

然后 <meta name="viewport" content="width=320,initial-scale=1,user-scalable=no">

默认宽度可以设置为你写网页的宽度。

然后再通过js 来控制scale的比例缩放即可 也可以控制 最小宽度 跟 最大宽度。


4.固定宽度布局开发WebApp如何实现多终端下自适应?

  • 固定一个某些宽度,使用一个模式,加上少许的媒体查询方案
  • 使用flexbox解决方案
  • 使用百分比加媒体查询
  • 使用rem
  •                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          




返回列表 返回列表
评论

    分享到