Bootstrap(十)

今天学习任务是bootstrap的响应式多媒体
响应式之前了解过了,就是自动根据屏幕大小变化
这个多媒体包括了图标,图像,视频

Bootstrap图标的响应式
图标有很多种,有img导入的,还有Sprites(雪碧图),Icon font(字体图标),SVG Icon,DataURI,在技术实现时,需要考虑页面的可访问性、重构的灵活性、可复用性、可维护性。

img
操作简单方便,只需要更换路径就可以很容易更换图片,但是如果用的过多会增加http的请求数,直接影响页面的加载性能,并且不易与修改图标样式

Sprites
又叫CSS精灵,它可以极大限度地减小http请求数,而且有很好的兼容性,但是制作开发需要花大量时间,维护成本高,图片尺寸只是固定的,不易修改图片的大小和定位。随着retina屏幕的使用,图标也变得模糊不清。

Icon Font
字体图标,为了解决屏幕分辨率对图标影响的问题而诞生,相对于位图而言,它不受限于屏幕分辨率,只要与字体相关的css属性都适合字体图标。只不过字体图标只能被渲染成单色或css3的渐变色,文件体积往往会很大的,会直接影响加载性能

SVG
这种图标也能够适应屏幕分辨率,它是一种矢量图标。Svg图标是一个服务于浏览器的xml文件,而不是一个字体或者像素的位图,它是由浏览器直接渲染xml,任何大小下都会保持图像清晰,并且可以在代码中直接使用动画或者修改颜色、描边等,不需要借助任何图形编辑软件便可以直接自定义图像

dataURI
这种图标形式是利用base64编码规范将图片转换为文本字符,不仅仅是图片,还能够编码js,css,html等文件。将图标文件转换成文本字符后,就可以直接写在html/css文件中,也就不需要发送什么请求了。他的劣势在于每次都都要解码从而阻塞了css渲染,可以把其他css和图片css分成两部分,但是这样就需要增加一个请求,这样一来,原本的优势就没了。

如何选择web中的图标方案。
1.如果你需要信息更加丰富的图片,不仅仅是图标时,推荐img
2.如果是装饰性的图片,不怎么需要改变大小的,推荐sprites
3.如果需要高分辨率高清的适应,推荐svg
4.如果仅仅使用icon这些小图标的时候,又希望做一定啊个性化样式,考虑使用icon font
5.如果需要图标更具有扩展性,又不希望加载其它额外的图标,可以考虑在页面中直接使用svg

其实就是一句话,要求高用svg,要求低用其他小图标

boottstrap图像的响应式
不同平台不可能用同一张大小的图片,这样会影响加载速度
但是我想,总不能同一个图片准备好几种分辨率和大小的文件吧,这样加载是的速度会很慢,这些图片虽然只选用了其中一张,但是实际上是加载了所有的,网页会非常地臃肿
有以下几个方案:
focal point,
他是一个框架,作用是帮助"种植"图片并且控制焦点,开发者只需要向对应的标签中添加含有目标图片的类即可(…书上写的种植,我完全不知道它想表达什么…)
CSS Sprites
他的作用是把网页需要的各种大小的图片都包含到一张大图中供选择器引用,如此,只需要一个http请求
自适应图片
自适应图片的解决方法是通过检测设备的屏幕尺寸,为html嵌入符合屏幕尺寸需求的图片资源,他需要在被本地运行的js来检测,但是她主要还是依靠apache2网络服务器,php5.x以及GD库。他的优势就在于不需要改变标记(…我也不是很清楚什么标记…)

<img src="dog-689.jpg"
      srcset="dog-689.jpg   689w,
             dog-1378.jpg    1378w,
             dog-500.jpg     500w,
             dog-1000.jpg    1000w"
      sizes="(min-width:1066px)   689px,
             (min-width:800px)    calc(75vw-137px),
             (min-width:530px)    calc(100vw-96px),
             100vw">

举例,如果是800px的窗口,那么800*0.75-137=463
然后463xdpr 再到secset中找到适合于这个数的图片

图像网格
网格布局能够基于固定数量、浏览器窗口中的可用空间划分网页主要区域的空间

网格布局将元素按列和行对齐,但是没有内容结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
		<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
		<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
		<style>
			.cbp-ig-grid{
				list-style:none;
				padding:0 0 50px 0;
				margin:0;
			}
			
			.cbp-ig-grid::before,
			.cbp-ig-grid:after{
				content: "";
				display: table;
			}
			.cbp-ig-grid:after{
				clear: both;
			}
			.cbp-ig-grid li{
				width:33%;
				float: left;
				height: 420px;
				text-align: center;
				border-top:1px solid #ddd;
			}
			.cbp-ig-grid li:nth-child(-n+3){
				border-top: none;
			}
			.cbp-ig-grid li:nth-child(3n-1),
			.cbp-ig-grid li:nth-child(3n-2){
				box-shadow:1px 0 0 #ddd;
			}
			.cbp-ig-grid li>a{
				display: block;
				height: 100%;
				color:#47a3da;
				-webkit-transition:backgroud 0.2s;
			}
			
			.cbp-ig-grid .cbp-ig-title{
				margin:20px 0 10px 0;
				padding:20px 0 0 0;
				font-size:2em;
				position:relative;
				-webkit-transition:-webkit-transform 0.2s;
			}
			
			.cbp-ig-grid li>a:hover{
				background:#47a3da;
			}
			
			.cbp-ig-grid li>a:hover .cbp-ig-icon{
				-webkit-transform:translateY(10px);
				
			}
			
			.cbp-ig-grid li>a:hover .cbp-ig-icon:before,
			.cbp-ig-grid li>a:hover .cbp-ig-title{
				color:#fff;
			}
			
			.cbp-ig-grid li>a:hover .cbp-ig-title{
				-webkit-transform:translateY(-30px);
				
			}
			.cbp-ig-grid li>a:hover .cbp-ig-title:before{
				background:#fff;
				margin-top:80px;
			}
			
			@media screen and (max-width:62.75em){
				.cbp-ig-grid li{
					width:50%;
				}
				.cbp-ig-grid li:nth-child(-n+3){
					border-top:1px solid #ddd;
				}
				.cbp-ig-grid li:nth-child(3n-1),
				.cbp-ig-grid li:nth-child(3n-2){
					box-shadow:none;
				}
				.cbp-ig-grid li:nth-child(-n+2){
					border-top:none;
				}
				.cbp-ig-grid li:nth-child(2n-1){
					box-shadow:1px 0 0 #ddd;
				}
			}
			@media screen and (max-width:41.6em){
				.cbp-ig-grid li{
					width: 100%;
				}
				.cbp-ig-grid li:nth-child(-n+2){
					border-top:1px solid #ddd;
				}
				.cbp-ig-grid li:nth-child(2n-1){
					box-shadow:none;
				}
				.cbp-ig-grid li:first-child{
					border-top: none;
				}
			}
			@media screen and (max-width:25em){
				.cbp-ig-grid{
					font-size:80%;
				}
				.cbp-ig-grid .cbp-ig-category{
					margin-top:20px;
				}
			}
		</style>
	</head>
	<body>
		<ul class="cbp-ig-grid">
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-shoe"></span>
					<h3 class="cbp-ig-title">经典款</h3>
					<span class="cbg-ig-category">时尚</span>
				</a>
			</li>
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-milk"></span>
					<h3 class="cbp-ig-title">运动时</h3>
					<span class="cbg-ig-category">休闲款</span>
				</a>
			</li>
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-spectacles"></span>
					<h3 class="cbp-ig-title">眼睛</h3>
					<span class="cbg-ig-category">实用</span>
				</a>
			</li>
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-ribbon"></span>
					<h3 class="cbp-ig-title">录像带</h3>
					<span class="cbg-ig-category">设计版</span>
				</a>
			</li>
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-whippy"></span>
					<h3 class="cbp-ig-title">甜品</h3>
					<span class="cbg-ig-category">视频</span>
				</a>
			</li>
			<li>
				<a href="#">
					<span class="cbp-ig-icon cbp-ig-icon-doumbek"></span>
					<h3 class="cbp-ig-title">衣柜</h3>
					<span class="cbg-ig-category">经典</span>
				</a>
			</li>
		</ul>
	</body>
</html>

以上是书上的全部代码
它根据屏幕的大小不同,一共分了3种显示形式,单列、双列、三列

bootstrap视频的响应式
视频的响应式大部分的时候光靠css是做不到的,还需要结合js
书上推荐使用iframe+CSS
具体的她没写很详细,以后需要了再学吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值