使用css实现网站响应式基础自适应网页

2015/11/1519:03:48使用css实现网站响应式基础自适应网页已关闭评论 928
摘要

CSS字体自适应缩放。

css字体大小自适应

字体自适应缩放,其实也不是什么难技术可以用JS控制也可以用css的@media根据屏幕宽度判断,缩放的比例。问题是屏幕要多宽字体缩放到什么比例才能符合大众这才是问题。
不说了直接放出代码:

@media (min-width: 1700px) { html { font-size: 188%; } }
 @media (max-width: 1700px) { html { font-size: 188%; } }
 @media (max-width: 1680px) { html { font-size: 186%; } }
 @media (max-width: 1660px) { html { font-size: 184%; } }
 @media (max-width: 1640px) { html { font-size: 182%; } }
 @media (max-width: 1620px) { html { font-size: 180%; } }
 @media (max-width: 1600px) { html { font-size: 178%; } }
 @media (max-width: 1580px) { html { font-size: 176%; } }
 @media (max-width: 1560px) { html { font-size: 174%; } }
 @media (max-width: 1540px) { html { font-size: 172%; } }
 @media (max-width: 1520px) { html { font-size: 170%; } }
 @media (max-width: 1500px) { html { font-size: 168%; } }
 @media (max-width: 1480px) { html { font-size: 166%; } }
 @media (max-width: 1460px) { html { font-size: 164%; } }
 @media (max-width: 1440px) { html { font-size: 162%; } }
 @media (max-width: 1420px) { html { font-size: 160%; } }
 @media (max-width: 1400px) { html { font-size: 158%; } }
 @media (max-width: 1380px) { html { font-size: 156%; } }
 @media (max-width: 1360px) { html { font-size: 154%; } }
 @media (max-width: 1340px) { html { font-size: 152%; } }
 @media (max-width: 1320px) { html { font-size: 150%; } }
 @media (max-width: 1300px) { html { font-size: 148%; } }
 @media (max-width: 1280px) { html { font-size: 146%; } }
 @media (max-width: 1260px) { html { font-size: 144%; } }
 @media (max-width: 1240px) { html { font-size: 142%; } }
 @media (max-width: 1220px) { html { font-size: 140%; } }
 @media (max-width: 1200px) { html { font-size: 138%; } }
 @media (max-width: 1180px) { html { font-size: 136%; } }
 @media (max-width: 1160px) { html { font-size: 134%; } }
 @media (max-width: 1140px) { html { font-size: 132%; } }
 @media (max-width: 1120px) { html { font-size: 130%; } }
 @media (max-width: 1100px) { html { font-size: 128%; } }
 @media (max-width: 1080px) { html { font-size: 126%; } }
 @media (max-width: 1060px) { html { font-size: 124%; } }
 @media (max-width: 1040px) { html { font-size: 122%; } }
 @media (max-width: 1020px) { html { font-size: 120%; } }
 @media (max-width: 1000px) { html { font-size: 118%; } }
 @media (max-width: 980px) { html { font-size: 116%; } }
 @media (max-width: 960px) { html { font-size: 114%; } }
 @media (max-width: 940px) { html { font-size: 112%; } }
 @media (max-width: 920px) { html { font-size: 110%; } }
 @media (max-width: 900px) { html { font-size: 108%; } }
 @media (max-width: 880px) { html { font-size: 106%; } }
 @media (max-width: 860px) { html { font-size: 104%; } }
 @media (max-width: 840px) { html { font-size: 102%; } }
 @media (max-width: 820px) { html { font-size: 100%; } }
 @media (max-width: 800px) { html { font-size: 98%; } }
 @media (max-width: 780px) { html { font-size: 96%; } }
 @media (max-width: 760px) { html { font-size: 94%; } }
 @media (max-width: 740px) { html { font-size: 92%; } }
 @media (max-width: 720px) { html { font-size: 90%; } }
 @media (max-width: 700px) { html { font-size: 88%; } }
 @media (max-width: 680px) { html { font-size: 86%; } }
 @media (max-width: 660px) { html { font-size: 84%; } }
 @media (max-width: 640px) { html { font-size: 82%; } }
 @media (max-width: 620px) { html { font-size: 80%; } }
 @media (max-width: 600px) { html { font-size: 78%; } }
 @media (max-width: 580px) { html { font-size: 76%; } }
 @media (max-width: 560px) { html { font-size: 74%; } }
 @media (max-width: 540px) { html { font-size: 72%; } }
 @media (max-width: 520px) { html { font-size: 70%; } }
 @media (max-width: 500px) { html { font-size: 68%; } }
 @media (max-width: 480px) { html { font-size: 66%; } }
 @media (max-width: 460px) { html { font-size: 64%; } }
 @media (max-width: 440px) { html { font-size: 62%; } }
 @media (max-width: 420px) { html { font-size: 60%; } }
 @media (max-width: 400px) { html { font-size: 58%; } }
 @media (max-width: 380px) { html { font-size: 56%; } }
 @media (max-width: 360px) { html { font-size: 54%; } }
 @media (max-width: 340px) { html { font-size: 52%; } }
 @media (max-width: 320px) { html { font-size: 50%; } }

扩展:字体大小自适应纯css解决方案

css实现缩放自适应网页,达到根据不同终端设备适应宽度,达到响应式效果的网站

一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?
首先,在网页代码的头部,加入一行viewport元标签。
<meta name="viewport" content="width=device-width, initial-scale=1" />
viewport是网页默认的宽度和高度,这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比 例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。

下面三篇文章是对viewport属性详细的解释: Viewport(视区概念)—pc端的理解Viewport(视区概念)——移动端的应用

viewport—视区概念。对于老式IE6,7,8浏览器需要js处理。由于手机主要平台是ios和安卓,所有可以暂时不考虑

二. 不使用绝对宽度 由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。

这一条非常重要。 具体说,CSS代码不能指定像素宽度: width:xxx px; 只能指定百分比宽度: width: xx%; 或者:width:auto; 这里开发是指一个网页不仅能用在pc上,也能同时用于移动端,但是对于webapp这种还是需要单独做一个webapp使用的页面。

对于这个知识点,对于我目前做的项目有用处,主要用于控制限定数据库里读出来的图片宽度。 详见:手机webapp的jquery mobile初次使用心得和解决图片自适应大小问题

三. 相对大小的字体 字体也不能使用绝对大小(px),而只能使用相对大小(em)。

body { font: normal 100% Helvetica, Arial, sans-serif; }
上面的代码指定,字体大小是页面默认大小的100%,即16像素。
h1 { font-size: 1.5em; }

然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。
small { font-size: 0.875em; }
small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。

四. 流动布局(fluid grid) "流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的。
.main { float: right; width: 70%; } .leftBar { float: left; width: 25%; }
float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。 另外,绝对定位(position: absolute)的使用,也要非常小心。

五. "自适应网页设计"的核心,就是CSS3引入的Media Query模块的媒体查询功能。 它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 400px)" href="tinyScreen.css" />

上面的代码意思是,如果屏幕宽度小于400像素(max-device-width: 400px),就加载tinyScreen.css文件。

<link rel="stylesheet" type="text/css" media="screen and (min-width: 400px) and (max-device-width: 600px)" href="smallScreen.css" />
如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。

除了用html标签加载CSS文件,还可以在现有CSS文件中加载。
@import url("tinyScreen.css") screen and (max-device-width: 400px);

六. CSS的@media规则 同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。
@media screen and (max-device-width: 400px) { .column { float: none; width:auto; } #sidebar { display:none; } }
上面的代码意思是,如果屏幕宽度小于400像素,则column块取消浮动(float:none)、宽度自动调节(width:auto),sidebar块不显示(display:none)。

七. 图片的自适应(fluid image) 除了布局和文本,"自适应网页设计"还必须实现图片的自动缩放。 这只要一行CSS代码:
img { max-width: 100%;} 这行代码对于大多数嵌入网页的视频也有效,所以可以写成:
img, object { max-width: 100%;}
老版本的IE不支持max-width,
所以只好写成: img { width: 100%; }

此外,windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的专有命令:
img { -ms-interpolation-mode: bicubic; } 或者,Ethan Marcotte的imgSizer.js。 addLoadEvent(function() { var imgs = document.getElementById("content").getElementsByTagName_r("img"); imgSizer.collate(imgs); });

不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有很多方法可以做到这一条,服务器端和客户端都可以实现。

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin