html5 弹性布局

一、移动开发常用技巧

Viewport基本知识

设置布局Viewport的各种信息
1、width=device-width; 设置Viewport视口宽度等于设备宽度
2、initial-scale=1; 网页默认缩放比为1(网页在手持设备上,不会进行默认缩放
3、minimum-scale=1 网页最小缩放比为1
4、maximum-scale=1 网页最小大缩放比为1
5、user-scalable=no 禁止用户手动缩放网页(ios10+ 的设备失效)

在手机站及响应式网站的制作中,网页必须添加下述Viewport的设置语句

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

禁止设备将手机号、邮箱进行识别,取消点击拨打电话等事件

<meta name="format-detection" content="telephone=no,email=no"/>

ios 添加到主屏幕时,WebAPP的标题

<meta name="apple-mobile-web-app-title" content="标题"/>

ios添加到主屏幕时,启用WebAPP的全屏模式,删除顶端地址栏和底部工具栏

<meta name="apple-mobile-web-app-capable" content="yes"/>

ios 添加到主屏幕时,WebAPP的顶部状态栏颜色:
black:黑色
white:白色
balck-translucent:黑色半透明。但设置为半透明时网页将充满整个屏幕,顶部透明的状态栏将盖住网页最上方一小条

<meta name="apple-mobile-web-app-status-bar-style" content="black"/>

ios添加到主屏幕时WebAPP的图标,href属性为图标路径

<link rel="apple-touch-icon-precomposed" href=""/>

设置浏览器使用最新的IE或chrome去编译:
>>>这句设置语句不是手机端专用,一般pc网页均需设置

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

[手机端字体样式]

1、一般手机端不支持微软雅黑字体
2、中文字体一般不设置,使用系统默认即可
3、英文字体一般设置为font-family: helvetica;

font-family: helvetica;

设置用户不能选中文本:

1、手机端不能长按选择
2、pc端不能用鼠标选择

-webkit-user-select: none;
-moz-user-select: none;

设置表单的默认外观,手机、 pc均可使用

appearance: none;
-webkit-appearance: none;
-moz-appearance: none;

设置placeholder的属性

input::-webkit-input-placeholder {
color: red;
}
input:-ms-input-placeholder { // IE10+
color: red;
}
input:-moz-placeholder { // Firefox4-18
color: red;
}
input::-moz-placeholder { // Firefox19+
color: red;
}

禁止图片和超链接长按弹出菜单

-webkit-appearance: none;

二、响应式布局

【使用媒体查询的三种方式】

1、直接在CSS中使用:

@media 类型(长选all/screen) and (条件1) and (条件2) {
  CSS选择器{
    CSS属性:属性值;
  }
}

2、使用link链接CSS,media属性可以设置媒体查询方式:

<link rel="stylesheet" href="css/02响应式布局.css" media="all and (max-width: 800px)"/>

3、使用@import导入,直接在url()后面使用空格,即那个媒体查询规则:

@import url("css/02响应式布局.css") all and (max-width: 800px);


三、弹性布局的使用

[flex弹性布局]

1、了解两个基本概念

容器:需要添加弹性布局的父元素
项目:弹性布局容器中的每一个子元素,称为项目

2、弹性布局的使用?

①给父容器添加display:flex/inline-flex;属性,即可使容器内容采用弹性布局显示,而不遵循常规文档流的显示方式
②容器添加弹性布局后,仅仅是容器内容采用弹性布局,而容器自身在文档流中的定位方式依然遵循常规文档流
③display:flex;容器添加弹性布局后,显示为块级元素
 display:inline-flex;容器添加弹性布局后,显示为行级元素
④注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。但是position属性依然生效。

3、作用于容器的相关属性

① flex-direction属性决定主轴的方向(即项目的排列方向)。
  row(默认值):主轴为水平方向,起点在左端
  row-reverse:主轴为水平方向,起点在右端
  column:主轴为垂直方向,起点在上沿。
  column-reverse:主轴为垂直方向,起点在下沿。

②flex-wrap属性定义,如果一条轴线排不下,如何换行

   nowrap(默认):不换行。当容器宽度不够时,每个项目会被挤压宽度
   wrap:换行,并且第一行在容器最上方
  wrap-reverse:换行,并且第一行在容器最下方

③ flex-flow   是flex-direction和flex-wrap的缩写形式,默认值是row nowrap

④ justify-content属性定义了项目在主轴上的对齐方式。
   >>>此属性与主轴方向息息相关:主轴方向为:row-起点在左边,row-reverse-起点在右边,column-起点在上边,column-reverse-起点在下边
  flex-start(默认值):项目位于主轴起点
  flex-end:项目位于主轴终点
  center: 居中
  space-between:两端对齐,项目之间的间隔都相等。(开头和最后的项目,与父容器的边缘没有间隔)
  space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。(开头和最后的项目,与父容器的边缘有一定的间隔)

⑤ align-items属性定义项目在交叉轴上如何对齐。
  flex-start:交叉轴的起点对齐。
  flex-end:交叉轴的终点对齐。
  center:交叉轴的中点对齐。
  baseline: 项目的第一行文字的基线对齐。(文字的行高、字体大小会影响每行的基线)
  stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

⑥align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
  >>>当项目换为多行时,可以使用align-content取代align-items(单行时使用align-items,多行时使用align-content)
  flex-start:与交叉轴的起点对齐。
  flex-end:与交叉轴的终点对齐。
  center:与交叉轴的中点对齐。
  space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  stretch(默认值):轴线占满整个交叉轴。

4、作用于项目上的属性

① order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
② flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
③ flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
④ flex-basis定义项目占据的主轴空间。(如果主轴为水平,则设置这个属性,相当于设置项目的宽度。原width会失效)
⑤ flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
这个属性有两个快捷设置: auto=(1 1 auto)/none(0 0 auto)
⑥ align-self:定义单个项目自身在交叉轴上的排列方式,可以覆盖掉容器上的align-item属性
属性值:与align-items相同,默认值为auto,表示继承父容器的align-items属性值


四、响应式布局demo

HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/响应式布局demo.css"/>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head> <body>
<header id="header">
<ul>
<li>header1</li>
<li>header2</li>
<li>header3</li>
<li>header4</li>
<li>header5</li>
</ul> <div>icon</div>
</header> <section id="main">
<div class="left">left</div>
<div class="center">center</div>
<div class="right">right</div>
</section> <footer id="foot">
footer
</footer>
</body>
</html>

CSS代码

*{
margin: 0px;
padding: 0px;
font-size: 48px;
text-align: center;
box-sizing: border-box;
} #header,
#main,
#foot{
height: 100px;
width: 1200px;
background-color: chocolate;
line-height: 100px;
margin: 0 auto;
min-width: 300px;
}
#header ul{
width: 80%;
}
#header ul li{
float: left;
width: 20%;
list-style: none;
font-size: 20px;
}
#header div{
width: 50px;
height: 50px;
background-color: yellow;
float: right;
line-height: 50px;
font-size: 20px;
margin-top: 25px;
margin-right: 25px;
display: none;
} #main{
height: 500px;
line-height: 500px;
border-bottom: 10px solid white;
border-top: 10px solid white;
}
#main .left{
width: 25%;
height: 500px;
background-color: darkcyan;
float: left;
}
#main .center{
width: 50%;
height: 500px;
background-color: navajowhite;
float: left;
border-left: 10px solid white;
border-right: 10px solid white;
}
#main .right{
width: 25%;
height: 500px;
background-color: salmon;
float: left;
}
@media screen and (max-width: 1200px) {
#header,
#main,
#foot{
width: 100%;
} } @media only screen and (max-width: 900px) {
#main .right{
display: none;
}
#main .left{
width: 35%;
}
#main .center{
width: 65%;
border-right: hidden;
}
} @media only screen and (max-width: 600px) {
#header ul{
display: none;
}
#header div{
display: block;
}
#main{
height: 920px;
}
#main .left{
float: none;
width: 100%;
height: 250px;
line-height: 250px;
}
#main .center{
float: none;
width: 100%;
height: 400px;
line-height: 400px;
border-left: hidden;
border-top: 10px solid white;
border-bottom: 10px solid white;
}
#main .right{
display: block;
float: none;
width: 100%;
height: 250px;
line-height: 250px;
}
}

显示效果:

html5 弹性布局的更多相关文章

  1. html5弹性布局两则,有交互。

    要开发一个后台管理框架,要求如下效果. 然后开始找各种弹性布局啊什么的,用了flex写了一个,但是觉得不好,首先是兼容,其次它会破坏掉里面子元素的一些css特性,为了不给自己找麻烦我还是用传统写法吧. ...

  2. 前端入门5-CSS弹性布局flex

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...

  3. css3 FlexBox 弹性布局

    Flex 弹性布局 这个是css3中新添加的内容,现在已经支持所有的浏览器,利用Flex布局,可以简便.完整.响应式地实现各种页面布局. 注意:在设置 flex 后,子元素的flaot ,clear, ...

  4. CSS3中的弹性布局——"em"的用法

    使用CSS也好久了,但一直都是在使用“px”来设置Web元素的相关属性,未敢使用“em”.主要原因是,对其并不什么了解,只知道一点概念性的东西,前段时间在项目中要求使用“em”作为单位设置元素,所以从 ...

  5. 弹性布局flex-兼容问题

    这里弹性布局的用法就不说了 用过的都知道很方便 虽然现在弹性布局已经实现标准了 但是还是存在一些兼容问题 旧版本 (一些低版本的浏览器) display:-webkit-box; 新版本(目前的标准版 ...

  6. 淘宝弹性布局方案lib-flexible实践

    2个月前,写过一篇文章<从网易与淘宝的font-size思考前端设计稿与工作流>总结过一些移动web中有关手机适配的一些思路,当时也是因为工作的关系分析了下网易跟淘宝的移动页面,最后才有那 ...

  7. 基于淘宝弹性布局方案lib-flexible的问题研究

    上篇文章<淘宝弹性布局方案lib-flexible实践>结合一个简单的实例,说明了lib-flexible的基本用法,但是lib-flexible的这种适配方式在适配的时候会修改viewp ...

  8. web app 自适应方案总结 关键字 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  9. 移动端弹性布局--flex

    目前,Flex布局,可以简便.完整.响应式地实现各种页面布局.而且,它已得到了所有浏览器的支持,这意味着,我们能很安全地使用这项功能. 如果你对弹性网页布局感兴趣,那可别错过flex这么好用的属性哦. ...

随机推荐

  1. Python 反射-isinstance-issubclass-__str__-__del__

    用到的 isinstance(对象,类)  -------------------  判断一个对象是否是一个类的实例 issubclass(子类,父类)  ----------------  判断一个 ...

  2. Android Studio + Genymotion模拟器安装与配置

    一.Android studio 下载与安装 https://developer.android.google.cn/studio/index.html 进入谷歌官方链接下载Android studi ...

  3. 安装nvm 切换nodejs版本

    删除已安装的nodejs--------------------------------------------------------------- #查看已经安装在全局的模块,以便删除这些全局模块 ...

  4. Oracle 实现查询不区分大小写(设置数据库)

    转http://blog.csdn.net/shl7765856/article/details/7622756 查询数据的时候. SQL Server 默认 不区分大小写. 如果要区分,就要额外的设 ...

  5. LeetCode(88)Merge Sorted Array

    题目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note ...

  6. 《ajax学习》之ajax+JavaScript事件验证用户名是否可注册

    当用户注册时,服务器数据库需要对用户输入的用户信息(以用户名为例子)进行验证,在不刷新页面的情况下又需要页面和服务器进行数据请求,最好的方法是用ajax异步请求. 一.实现思路: 1.用户输入信息 2 ...

  7. [luoguP1019] 单词接龙(DFS)

    传送门 不知为什么,判断全部包含反而A不了,不判断反而A了,╮(╯▽╰)╭ 代码 #include <cstdio> #include <iostream> #define m ...

  8. [luoguP2617] Dynamic Ranking(树状数组 套 主席树 + 离散化)

    传送门 BZOJ上是权限题,洛谷赞啊. 求区间 K 大数很简单. 但是如果修改某个数的话,那么就得把这个数及后面所建的主席树都更新一遍 nlogn,显然不行. 所以可以在外面套一个树状数组来优化,树状 ...

  9. MySQL查看表结构及查看建表语句

    查看表结构:desc 表名 mysql> use recommend; Database changed mysql> desc user; +--------------+------- ...

  10. ***CodeIgnite/CI 去掉 index.php的 配置

    CI有效删除URL中的index.php 参考: http://codeigniter.org.cn/forums/thread-15444-1-1.html 读CI的使用手册的话,关于如何有效删除U ...