一、响应式网站
1、响应式网站是一个设计理念,是多项技术的综合体。
2、设计的技术:
(1)flexible grid layout 弹性网格布局.
(2)flexible image 弹性图片
(3)media queries 媒体查询
一、css3媒体属性
1、width:视口宽度
2、height:视口高度
3、device-width:渲染表面的宽度,就是设备屏幕的宽度。
4、device-height:渲染表面的高度,就是设备屏幕的高度。
5、orientation:检查设备处于横向还是纵向。
6、aspect-ratio:基于视口宽度和高度的宽高比。
7、device-aspect-ratio:渲染表面的宽度,就是设备屏幕的宽度。
8、color:每种颜色的位数bits,如:min-color:16位,8位。
9、resolution:检测屏幕或打印机的分辨率,如min-resolution:300dpi
注:以上属性都可以添加min-或max-前缀
一、viewport视口
1、布局视口(layout viewport),默认宽度是960px,这样需要缩放页面;如果布局视口为理想视口,即手机宽度,则页面不需要缩放。
2、可视视口(visual viewport),默认宽度是手机宽度
3、理想视口(ideal viewport),理想视口就是为构建手机浏览器优化的页面添加的,添加视口标签,如果不写这句话,布局视口的宽度是厂商的默认值,如960px或980px等,如果指定该属性,布局视口成为理想视口。
一、项目目录结构
1、约定优于配置(convention over configuration)
约定代码结构或命名规范以减少配置数量。
1、robots.txt,给搜索引擎,机器人看的。
User-agent: *
Disallow: /admin/
2、humans.txt,保存网络建设者和其它信息
3、404.html
4、.editorConfig,不同编辑器中统一代码风格,早期webstorm可以在插件中下载EditorConfig,现在已经内嵌,不需再下载。
# editorconfig.org
root = true
[*]
charset = utf-8 // 文件保存格式
indent_size = tab
tab_width = 4
tab_style = tab
insert_final_newline = true // true:文件以空白行结尾
trim_trailing_whitespace = true // 去除换行行首的空白字符
[*.md]
trim_trailing_whitespace = false
5、.gitignore,不需要版本管理的文件
*.~ // mac操作系统生成的垃圾文件,默认隐藏
.DS_Store // mac操作系统生成的垃圾文件,默认隐藏
.idea // webstorm设置目录
node_modules // 存放了nodejs引入的模块目录
dist // 工具生成的文件发布目录
// webstorm当前页面,右击,add template,使用了哪些语言,和哪些ide,勾选上,相关的垃圾文件,就会被添加到.gitignore列表中
6、LICENSE.txt,声明或协议
7、README.md,可以参考bootstrap
(1)项目简介,使用方式、相关链接。
(2)md,markdown的简写,也就是markdown文件.
(3)webstorm的markdown编辑工具,插件下载MultiMarkDown
(4)在线编辑markdown文件:http://dillinger.io
8、CHANGELOG.md
项目每个版本的更新,说明版本号、更新内容、修复了哪些问题等。
一、webstorm新建的文件中创建html5文件模板,输入html:5
,然后按tab就行。
一、html中的lang,
1、如果是zh-CH,支持简体中文;如果是zh,支持更广泛的中文,包括简体,繁体,方言等。
2、如果lang是en,有些翻译软件就会进行翻译,如果是zh,则不会进行翻译。
二、charset
1、meta charset = "utf-8"
如果写在
之后,在老的ie中,则会无法正确解析(①出现空白页。②出现乱码)。
2、charset要放在页面的前1024个字节内,不然是无效的。
三、http-equiv
id=edge表示强制以最新的ie浏览器模式渲染页面,ie11对这个文档模式已经弃用了,ie11的支持已经比较好了。
一、一般都用class定义样式,id一般用于js快速得区别和获取元素class,一般都用中横线分隔,id一般都使用驼峰命名法。
二、必不可少的图片使用引入,可有可无的装饰性图片可以用标签的style引入。
一、用normalize.css作为基础css
1、resets.css
2、normalize.css,相对于传统resets.css,保护了有价值的默认样式,不会再有大段的继承链。
一、
/**********
* 页面样式
* *********/
/*========
基本默认值
=======*/
二、没有font-size时,浏览器有个默认的em设置:1em=16px
三、rem参照物给根元素html
四、ie8或者更低版本的浏览器不支持rem,兼容性方法
p{
font-size:16px;
font-size:1rem;
}
五、鼠标选中的颜色
::selection{
background-color:#b3d4fc;
text-shadow:none;
}
一、部分能共用的样式
1、样式统一
.text-center{
text-align:center !important;
}
.hide{
display:none !important;
}
.show{
display:block !important;
}
.invisible{
visibility:none
}
.text-hide{
font:0/0 a;
color:transparent;
text-shadow:none;
background-color:transparent;
border:0;
}
2、.text-hide,有些图片显示了,但是需要解说文字让seo查到,或网页阅读器阅读,就可以用这个。
一、flex是可以替代float的布局方式
ie8、9支持不是很好。
二、子元素浮动,父元素高度为0,这时就需要清除浮动。
三、清除浮动的4种方式
1、父元素最后增加一个标签,clear:both。会添加一个无意义的标签。
内容1
内容2
2、父元素溢出隐藏
3、给父元素也添加一个浮动,父元素浮动了,如果有父元素的父元素,也需要浮动,整个页面都建立在浮动布局的基础上。
这个方法影响页面布局,不推荐使用。
内容1
内容2
4、css实现,原理同方法1
(1)
.clearfix:after{
content: "";
display:block;
height:0;// 隐藏content元素
visibility:hidden; // 隐藏content元素
clear:both; // 清除浮动
}
.clearfix{ // 兼容ie6,ie7,zoom:1触发hasLayout,才能清除浮动
zoom:1;
}
内容1
内容2
(2)优化后:推荐使用该方法清除浮动
.clearfix:after,.clearfix:before{
content:"";
display:table;
}
.clearfix:after{
clear:both;
}
clearfix:before是为了防止顶部空白崩溃(即margin-top,margin-bottom的重叠)。
四、bfc: block Formatting Context快捷格式化上下文
1、触发bfc:(1)float。(2)overflow:除了visible之外的值。(4)display:table-cell/ table-caption/ inline-block; (5)position:fixed / absolute;
一、body的line-height:一般设置成1.5。
二、line-height:3rem在chrome中文版中并不等于line-height:30px;因为chrome中文版最小字号12px,这样3rem就等于36px;
三、中间有边线,两边无边线:即最前面的左边没有边线,最后面的右边没有边线
1、
header .top ul li{
display:inline-block;
}
header .top ul li + li{ /*li + li 表示第一个li元素后面紧跟着的兄弟节点的li,这样的选择器不包含列表中的第一个元素*/
border-left: 1px solid #999;
margin-left:-3px;
}
2、margin-left:-3px如果不写,则inline-block布局的li之间会有空白,因为html页面中存在空白字符。
2种解决方法
(1)删除代码中的空白字符。
(2)父元素font-size:0;
(3)标签书写方式:
1
2
(4)li不闭合
1
2
(5)设置父边距,但是不是所有的margin-left都是-3px,方案不完美。
(6)css4草案中的white-space-collapsing属性可以解决此问题,但是大部分浏览器不支持。
四、css sprits把很多小图合成到大图中。
一、透明度
1、background:rgba(),背景色透明,文字不透明。
2、opacity:0.6,背景色和文字都是透明。
3、
.item{
display:inline-block;
width:calc(33.333333333333% - 3rem); /* padding的2个rem,margin-right有2个1.5rem,每个分到1rem,所以就是2+1=3rem。如果是box-sizing:border-box,就会是- 1rem*/
padding:1rem;
}
.item + .item{
margin-left: 1.5rem;
}
一、content: "最新公告:\00a0\00a0"
, \000a0表示不换行的空白字符
二、-webkit-filter:grayscale(100%)
,能给图片添加一个灰色的滤镜。
三、autoprefixer在线工具能智能增加前缀:https://autoprefixer.github.io。
一、调试数字,按箭头键可以加1或者减1,按住shift+上下箭头,就是以10倍为单位进行改变。
二、大屏,中屏,小屏
@media only screen and (max-width: 800)
中屏幕:and (min-width:481px) and (max-width:800px)
小屏幕:and (max-width:480px)
一、@media如果用rem,会有小小的兼容性的问题,可以用em.
二、div[attr=“value”], div[attr*=“value”]能选到大部分[]选择的元素。
一、:nth-child(2)是第二个子元素,class为test1的元素被选中
:nth-child-of-type(2)是第二个有某种特定类型的标签子元素,class为test2的元素被选中。
一、webstorm的右键,选择split vertically,能对同一个文件进行分隔。
二、一般手机屏幕不小于320px.
一、表格响应式处理方式:
1、小屏中,隐藏某些不重要的项。
2、纵向横向转置。
3、表格每一项类似于表单一样的展示。
一、打印
1、去除背景色
2、字改成黑色
3、a链接增加下划线
4、
@media print{
pre,blockquote{
border:1px solid #999;
page-break-inside: avoid; /*避免在元素内部分页:opera*/
}
h3{
orphans:3; /*在元素内部发生分页时,必须在页面底部保留的最少行数。标题与文字发生分页的话,如果标题下没有3行文字,标题就到下一页*/
windows:3; /*在元素内部发生分页时,必须在页面顶部保留的最少行数。*/
}
h3{
}
orphas: 3
,
windows: 3 /*文字发生分页时,页面底部3行*/
一、一个好的广告滚动组件支持
1、支持不同的图片数量
2、支持响应式布局
3、具有良好的兼容性
二、怎样挑选第三方组件
1、使用人数
2、是否开源:前端库一般都是开源的。
3、文档是否齐全
4、活跃性
二、轮播插件
OwlCarousel2
一、响应式图片
1、图片的排版和布局
2、根据设备大小加载不同的图片
二、如何实现响应式图片
1、js或服务端,2种方法:
(1)js:3种480,800,1600的图片尺寸,判断后引入。
(2)设备信息写入cookie,服务器端决定返回哪张图片。
2、srcset
支持srcset的浏览器会根据分辨率,dpr,网速等选择最佳的图片。如果不设置size,默认按屏幕与图片100%的宽度来智能加载。
3、srcset配合sizes
(1)
(2)
sizes=“100vw”, 100%的视口宽度。
sizes=“50vw”, 50%的视口宽度。
(3)
大于等于800的宽度的情况下,宽度是800px,其他时候是100%
(4)
①calc里的-左右要加个空格,
②当大于等于800px,就会按计算的宽度来显示
4、picture
source的type有image/svg+xml, image/webp。
picture对老的浏览器和ie浏览器不支持。
5、svg
(1)在线创建svn网站:①editor.method.ac。②iconmoon.io
svg除了ie8以下浏览器不支持,其他都支持
一、、picturefill.js引入,能使浏览器支持picture
二、压缩图片网站
1、svg:iconizr.com
2、png、jpg: tinypng.com
三、图片代码
1、Node.js是一个javascript运行环境,不是一个库,也不是一个框架,也不是一个js应用。
2、之前js运行在浏览器上,现在可以运行在Node.js。
3、Node.js是基于chrome v8引擎的javascript运行环境。
4、chrome v8引擎独立于浏览器,因为一出生就被chrome拿来用,所以是chrome v8。可以将js代码解析成机器码。
一、npm下载
1、node install jquery:前缀+命令+包名
包名是区分大小写的,最好是使用小写。
2、package.json:里面有依赖的信息
一、package.json里的依赖:
1、“^1.7.4”: 大版本相同,其他可以不同,1.8.5,1.9.3都可以,2.7.4不行
2、"~1.7.4",1.7.5,1.7.8都可以,1.9.4不行
3、"~1.7", 1.8,1.9都可以,2.7不行
二、安装全局包
npm install jquery -g
三、写入package.json
1、写到dev-dependencies(开发环境)中:npm install jquery --save-dev
2、写到dependencies(生产环境)中:npm install jquery --save
3、开发环境的包在开发环境和生产环境都可以使用。
四、卸载package.json里的应用
1、npm uninstall jquery --save-dev
2、npm uninstall jquery --save
五、更新某些包
1、npm update jquery // 更新jquery包
2、npm update // 更新所有包
六、i 是install的简写,安装的时候可以直接用简写。npm i jquery --save
一、http-server
1、sudo npm i http-server -g
2、http-server src
3、 http-server src -p 8888,把端口改成8888
二、低版本ie浏览器如果要写:端口号,则需要加上协议http://,即写成http://192.168.100:8080/ ,不能写成192.168.100:8080
一、firefox的像素有进位问题,可能会导致宽度变宽。
二、safari工具栏的开发-进入响应式设计模式,就会有各种不同的设备。
三、测试ie:如果是mac,如果安装虚拟机,可以用parallels desktop控制中心,管理虚拟机。
四、ie8不支持Html5标签
一、IEtester测试各个版本的IE浏览器
二、下载虚拟机:
1、微软官网提供了很多版本的虚拟机。
2、从 https://github.com/sdissent/ievms 下载
三、虚拟机软件:
1、VMWare
2、Paralles Desktop(mac)
3、Virtual Box(免费)
一、自动化,跑测试用例。
1、友盟指数网站,有手机用户比例。
2、云测试:如www.testin.cn,针对app更好,html5测试没那么好。
3、推荐的虚拟机软件:www.genymotion.net, 基于virtual box,
一、浏览器hack写法查询。
1、browserhacks.com,可以查询到各个浏览器hack写法
二、浏览器兼容库
1、https://github.com/aFarkas/html5shiv ,很多网站都会用的shiv,ie8及一下不支持html5标签,引入这个库,可以让老的浏览器兼容html5。引入方式:
原理:通过createElement来创建浏览器老版本支持的标签。
2、https://github.com/scottjehl/Respond, 很有名的polyfill,ie6-8不支持css3的媒体查询,可以通过引入respond这个库,来支持媒体查询的min-width, max-width.
3、https://modernizr.com, 检测程序,检测浏览器对html5,css3等的支持情况,如果支持就会添加一种类,如果不支持就添加no-同名类。
(1)点击下载,选择需要的特性,点击build, 点击copy to clipboard。
(2)项目新建js,把复制到的代码拷贝进去。
(3)js的最上面引入该js文件。
(4)样式:
.svg .logo{
background-image:url(xxx.svg);
}
.no-svg .logo{
background-image:url(xxx.jpg);
}
三、查询某属性在各个浏览器上的兼容性
1、https://caniuse.com
一、浏览器同步测试工具
1、www.browsersync.com,所有设备同步滚动,同步点击,多台设备同时测试时非常有用。
2、安装
sudo npm install -g browser-sync
3、browser-sync start --server “src” --files “src/css/*.css”, server后面的src是兼容的根目录
一、压缩网站
1、https://javascript-minifier.com
在线压缩
二、打包发布
1、自动化构建工具:grunt、gulp(gulp与grunt更完善)
2、静态资源打包工具:webpcak
3、gulp:把每个文档当成一个流,进行流式操作。
4、gulp安装,开发依赖项,生产环境不需要
(1)npm init
(2)responsiveweb
(3)项目下就会出现一个package.json的文件,里面会有一些依赖项。
(4)安装:sudo npm install gulp --save-dev
(5)安装完毕后package.json里就有一个dependencies-dev里有个gulp
(6)gulp -v
(7)全局安装gulp后,当前项目也还需要再安装一下gulp,不然gulp可能不能正常使用。
(8)目录下新建一个gulpfile.js文件,因为gulp所有任务,需要定义在这个文件中。
(9)首先依赖加载项,定义一个任务,
(10) sudo npm install gulp-rev gulp-rev-replace gulp-useref gulp-filter gulp-uglify gulp-csso --save-dev
多个任务之间用空格隔开。
(11)gulp ,执行gulp默认任务。
一、/*! 中 的*
后有!就不会被压缩打包
一、插件
1、自动打包:gulp-watch插件(监听文件的改变,自动改变任务)
2、https://github.com/contra/gulp-concat ,将多个文件合并成一个文件
3、https://github.com/mahnunchik/gulp-responsive,生成响应式图片的插件
4、npm输入gulp-,就能搜到gulp所有插件。
5、模块化处理,是webpack的强项。
6、gulp可以对前端进行优化。
一、webstorm 被包裹 被包裹
1、ide:集成开发环境,编辑器。
2、a{click me} ,自动补全文字click me
3、lorem补全文字,
lorem10
就会生成10个没有意义的单词。
4、m10-20生成margin:10px 20px
。
5、setting - emmet - css - auto insert css vendor prefixs, 相应属性后面的勾打上,能为属性自动添加前缀
bdrs:10生成-webkit-border-radius:10px; border-radius:10px
等。
6、webstorm搜索keymap,能选择eclipse, visual studio等的快捷键。
7、在标签上按住f1,就会给出标签相应的描述。
8、让某段标签被其他标签包裹
①选中
②按住command + alt + t,
③选择surround with in html/jsp
④输入需要的标签div,就得到
9、command + shift + v, 双击在历史剪切板中选择文字。
10、command + alt + enter, 在上面增加一行。
shift + enter, 在下面增加一行。
11、整行选择 alt + 上下箭头(aSuncat:我电脑上无效)
12、command + shift + +或者-,能让代码全部折叠或展开
13、alt + shift + 上下箭头,整行移动代码
14、command + shift + m, 找到标签的开头或结尾,快速找到匹配的大括号
15、command + alt + 左右箭头,前进或后退,回到上次光标定位的位置。
16、command + shift + 空格,上次编辑的地方(aSuncat:无效)
17、command + e ,上次使用的文件
18、command + b,快速打开光标处的类或方法
19、command + alt + b, Go to implementation(s) 跳转方法实现处
20、css颜色选择的色块上点击,打开色轮/色板修改颜色
21、shift + f6 标签,变量重命名,变量引用到的地方都会改变
22、f2,定位到错误的地方(标红色下划线的地方),alt + enter,就会出现对错误地方的修改建议。
一、bootstrap
foundation
semantic UI,样式比其他的库丰富
pureCSS
二、使用框架的缺点
1、体积大而重,使用起来不方便。
一、原型设计工具
1、axure
2、mockup
二、axure
1、可以去下载axure库,安卓的material design
2、master页面,模板页面,如果每个页面都有头尾,这时候把头尾放在master就行了。
3、(1)可生成Html文件预览,pushlish-preview,
(2)生成html文件,publish-generate html files
4、动态面板,根据条件显示或者隐藏
三、sketch(mac中)
1、可以做原型设计,也可以做ui设计
2、主要针对矢量图,ps主要针对位图
四、切图
1、ps
(1)切图:切片- 存储为web格式
一、交互设计
1、flinto中文网,交互原型设计
2、principleForMac.com(mac),可以导成mp4,gif。