21-浮动对db和dib的影响
1 | <!DOCTYPE html> |
- 当 .left 浮动时:
- db按照原来一样的布局,但是文字会被挤压,不适合用于居中。
- dib会被.left挤出来,当dib宽度不够另起一行,db不会。
22-必企切图项目经验
1.设计图
在此只是给出前端目前流行的解决方案,并不涉及专业的UI知识,如有错误,欢迎指正。
1.1 flexible布局
手机布局目前很多网页遵循手淘的flexible布局,简而言之就是网页的视图随着屏幕的比例放大缩小,可以参考如下链接
放在大屏幕下(实际这类网页只适应手机屏幕,在此只是拿出来当个例子):
1.2 UI设计的时候怎么参考这类网页
上面的知识UI可以了解下,当然,这不是重点,兼容是前端的事。下面的才是重点!!
1.2.1 设计图比例
手淘设计师常选择iPhone6作为基准设计尺寸,交付给前端的设计尺寸是按750px * 1334px为准(高度会随着内容多少而改变)。
建议 UI设计图参考上述比例,但也可以不必遵循,可根据你们的手机做参考。(比如你的手机分辨率如果是1080 1920,那么你的设计图也可参考你的手机为1080px1920px)。
1.2.2 如何参考
实际上手机的显示跟电脑上是有区别的,
如何在ps里参考网上网页中设计元素(字体图像)的大小,
我的一个建议是拿出你们的==手机截屏==,==要把网页充满手机全屏再截图==,然后放到电脑上在ps里面去测量。
比如,你的手机是i6(i7,i8),那么你的设计图比例就做成750px*1334px(高度不定),你所需要填充的字体元素,图像元素,行高,图标大小,可以参考网上一些网站的设计。形成自己的一套标准。检查的时候也可以把设计图传给手机全屏看看效果怎么样。
如果你的手机是i6p( 7p 8p),那么你的设计图比例就做成1080px*1920px(高度不定),你所需要填充的字体元素,图像元素,行高,图标大小,可以参考网上一些网站的设计。形成自己的一套标准。检查的时候也可以把设计图传给手机全屏看看效果怎么样。
如果需要测试机也行,找珊姐借i6。
另外一种方式是通过浏览器的调试窗口来测量,不过这种方式需要转化计算,在此就不演示了,如果需要可以找我。
1.3 关于字体的题外话
实际上,在ps里的字体大小跟在网页上显示是不一样的,具体情况可以看下我这个提问。
所以,之前UI设计的时候,在图片上标明的字体大小,前端需要精准还原的时候不会只参考设计图上的标注。
另外,UI设计的时候,选择什么字体可以参考网上一些网站的风格。
1 | 微软雅黑, "Helvetica Neue", Helvetica, Arial, sans-serif |
额,这是我第一次做分享,也是我个人的经验之谈,如果有问题,欢迎与我探讨,谢谢!–泽鑫
23-占位图
http://placekitten.com/350/200
1 | Vue.use(VueLazyload, { |
1 | <script> |
23-慎用星号
*号破坏了继承关系
1 | <!DOCTYPE html> |
24-关于flexible的探讨
title: 24-关于flexible的探讨
date: 2018-05-03 10:05:30
categories: 前端-01-切图CSS
tags: 前端-01-切图CSS
首页,先给出原文出处,点击查看
最近看移动端1px的问题,由此联想到项目中使用的rem布局方案,先说说引入手淘flexible要注意的地方。
1. 加不加 viewport 标签
1.1介绍
1 | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"> |
对于这个问题,大漠(文章的作者)这样说,
查看原图
加不加viewport,在iPhone6下分别看下他们的情况
1 | <html data-dpr="2" style="font-size: 75px;"><head> |
如果加了viewport 标签
1 | <html data-dpr="1" style="font-size: 37.5px;"> |
二者效果我感觉是一致的,因为不加viewport标签下,initial-scale=0.5(缩放0.5),会帮你还原跟<html data-dpr="1" style="font-size: 37.5px;">
一样。
文章作者意思好像是为了做到高清。
1.2 ios动态设置dpr带来的问题
由于ios动态设置了dpr,带来了initial-scale的变化,这意味着,如果我们想在css里使用1
div{width:200px;height:200px}
在苹果下会缩放,
我们需要对不同dpr下做适配
1 | div { |
作者给了一个字体设置的sass混合宏,
1 | @mixin font-dpr($font-size){ |
1.3分割线
为了避免这样的匹配,==感觉还是加个viewport吧==,不用去匹配[dpr=2][dpr=3],而且必企的项目里有加,也没产生多大影响,@2x的图片也可以做到高清。==也不用为后面的1px分别匹配。==
注:切图也可以在ps里精准量测,然后转rem,上次估计是效果图原因。
2. 移动端 1px 问题
移动端1px变粗的原因
viewport的设置和屏幕物理分辨率是按比例而不是相同的. 移动端window对象有个devicePixelRatio属性, 它表示设备物理像素和css像素的比例, 在retina屏的iphone手机上, 这个值为2或3, css里写的1px长度映射到物理像素上就有2px或3px那么长.
也就是罪魁祸首就是设备像素比(window.devicePixelRatio),即:
设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。
例子可看必企底部栏border-top
我写了个@mixin,仅供参考
1 | @mixin onepx($position: bottom, $color: #666, $radius: 0) { |
后话:目前项目还是使用scss为主,如果等以后前端项目成熟了,再考虑换post-css,前端实在折腾~~
25-多行文本垂直居中
1 | li{ |
26-BFC
1.BFC布局规则:
- 内部的Box会在垂直方向,一个接一个地放置。
-Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠 - 每个元素的margin box的左边, 与包含块border - - box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
- BFC的区域不会与float box重叠。
- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
- 计算BFC的高度时,浮动元素也参与计算
二、哪些元素会生成BFC?
- 根元素
- float属性不为none
- position为absolute或fixed
- display为inline-block, table-cell, table-caption, flex, inline-flex
- overflow不为visible
三、BFC的作用及原理
- 自适应两栏布局
- 清除内部浮动
27-padding百分比
1.padding百分比
问题:当margin-top、padding-top的值是百分比时,分别是如何计算的?
- A 相对父级元素的height,相对自身的height
- B 相对最近父级块级元素的height,相对自身的height
- C 相对父级元素的width,相对自身的width
- D 相对最近父级块级元素的width,相对最近父级块级元素的width
可以对元素的margin设置百分数,百分数是相对于父元素的width计算,不管是margin-top/margin-bottom还是margin-left/margin-right。(padding同理)
如果没有为元素声明width,在这种情况下,元素框的总宽度包括外边距取决于父元素的width,这样可能得到“流式”页面,即元素的外边距会扩大或缩小以适应父元素的实际大小。如果对这个文档设置样式,使其元素使用百分数外边距,当用户修改浏览窗口的宽度时,外边距会随之扩大或缩小。
2.css中如何规定某一元素高度等于其宽度
1 | <style type="text/css"> |
28-重绘和回流
回流与重绘
当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。
当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。
注意:回流必将引起重绘,而重绘不一定会引起回流。