使用纯 CSS 实现响应式的图片显示效果
有许多方法可以实现页面里图像的响应式显示(Responsive)。然而,我碰到的所有方案都使用了JavaScript。这使我疑惑不用 JavaScript 实现图像响应是否可行。
我提出了下面纯CSS的方案。
它是如何工作的呢?
我把<img>标签防止在<span>内。src属性将从服务器获得手机版本的图像。接着我还在<span>元素内部包含了一点CSS。
什么??HTML文档中能嵌入了CSS?
是的,只要你增加了scoped属性,这就在HTML5里就是非常有效的。在这个CSS里,我从某个断点开始用了@media查询把作为背景的高清图像添加到<span>里。 在下面这段代码里,我只添加了一个断点,然而你当然可以按你喜欢的增加许多。
通过使用背景图像指示符,只有在需要的时候才会从服务器获取这个图像。也就是说,只有在media查询满足的时候才能获取到。<img>将确保<span>有正确的高宽比,这样<span>上的背景图像才能得到正确的现实。
代码展示
下面是可以运行的所有代码。
HTML
首先看HTML。
|
1
2
3
4
5
6
|
<span class="magik-responsive-image" id="image-01"><style scoped>@media screen and (min-width: 701px){#image-01{background-image:url(http://dummyimage.com/1600x1200/dcdcdc/000/?text=hi-res);}}</style></span> |
CSS 我们还需要对CSS最一点修改,以便在应当显示高清图像的时候隐藏低清晰度的图像。技巧是增加backgroud-size:100%;这使得在维护高宽比不变的情况下伸展背景。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
.magik-responsive-image {background-repeat: no-repeat;background-size: 100%;display: block;position: relative;}.magik-responsive-image img {max-width: 100%;}@media screen and (min-width: 701px) {.magik-responsive-image img{opacity: 0;}} |
好处
- 没有JavaScript
- 实现起来简单
- 还可用于视频(我将在以后的博客文章中发表有关这方面的内容)
缺点
- 在桌面环境下,需要向服务器发送两个请求
- <style>标签的scoped属性在主要的浏览器里仍然没有得到支持。正是由于这个原因,我们才需要增加一个id,不过在后端代码中增加这通常不是问题。
演示
看看 这个展示 。
原文地址:pure-css-responsive-images-yes-javascript
本文链接:http://www.cnblogs.com/oooweb/p/css-responsive-image-layout.html
使用纯 CSS 实现响应式的图片显示效果的更多相关文章
- 【纯css】响应式图片列表
示例演示 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- html实现时间轴_纯css实现响应式竖着/垂直时间抽布局效果
1.概述 html实现用时间点来展示事件发生点来代替用table展示一条条数据,能够给人清晰.一目了然能够看清事情发生的过程,UI页面也显示的那么清晰.如何用css+html做出时间轴展示事件点的?先 ...
- CSS制作响应式正方形及其应用
CSS制作响应式正方形?什么鬼?干嘛用的?干嘛用的没人有每人的需求,本人也正好是由于公司正在做的业务须要,想做个照片展示的功能(当然得符合响应式了).而这个照片展示必须符合下面几点功能:1.用三张图片 ...
- Responsive Web CSS – 在线响应式布局创建器
如果您已经使用了 CSS 或前端框架,创建响应式布局应该不难. 然而,如果你刚涉足这类布局,Responsive Web CSS 可以帮助你快速上手. 这是一个基于 Web 的工具,使任何人都可以通过 ...
- Elastislide - 响应式的图片循环展示效果
Elastislide 是一款非常优秀的响应式 jQuery 图片循环展示(旋转木马)插件,集成了 Touchwipe 插件以支持触屏设备.提供了四种效果:水平图片传送带.垂直图片传送带.固定在屏幕底 ...
- ImageLightbox.js – 响应式的图片 Lightbox 插件
ImageLightbox.js 是一款很简洁的用于显示图片灯箱效果(Lightbox)的插件,没有字幕,导航按钮或默认背景.如果默认功能不够用的话,你可以很容易地自定义 JavaScript 函数扩 ...
- 基于jquery响应式网站图片无限加载瀑布流布局
分享一款效果非常酷的jQuery瀑布流布局无限加载图片效果.整个页面采用响应式布局,图片采用jQuery.Lazyload延时加载技术,提升整个页面的加载速度.效果图如下: 在线预览 源码下载 实 ...
- CSS:响应式下的折叠菜单(条纹式)
原文:CSS: Responsive Navigation Menu 译文:CSS:响应式导航菜单 译者:dwqs 写在之前,关于如何制作响应式的下拉菜单:响应式下的下拉菜单 之前,我写了一篇关于怎么 ...
- CSS实现响应式布局
用CSS实现响应式布局 响应式布局感觉很高大上,很难,但实际上只用CSS也能实现响应式布局要用的就是CSS中的没接查询,下面就介绍一下怎么运用: 使用@media 的三种方法 1.直接在CSS文件中使 ...
随机推荐
- Java GUI 点击按钮退出
import java.awt.*; import java.awt.event.*; public class TestFrameTwo implements ActionListener { Fr ...
- Ubuntu中Google Chrome安装
转载自博客 1. 方法一 1.在ubuntu中启动终端 2.在终端中,输入以下命令: sudo wget http://www.linuxidc.com/files/repo/google-c ...
- 【Leetcode】725. Split Linked List in Parts
Given a (singly) linked list with head node root, write a function to split the linked list into k c ...
- KeyBoard 操作 !
键盘操作:tab/ enter/ crtl+c ,crtl+v ; import java.awt.*; import java.awt.datatransfer.StringSelection; i ...
- js 实现路由功能
class Router { constructor() { this.routes = [] } handle(pattern, handler) { this.routes.push({ patt ...
- [C/C++] 虚函数机制
转自:c++ 虚函数的实现机制:笔记 1.c++实现多态的方法 其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面 ...
- 【uoj#282】长度测量鸡 结论题
题目描述 给出一个长度为 $\frac{n(n+1)}2$ 的直尺,要在 $0$ 和 $\frac{n(n+1)}2$ 之间选择 $n-1$ 个刻度,使得 $1\sim \frac{n(n+1)}2$ ...
- BZOJ3591 最长上升子序列(状压dp)
之前听说过一种dp套dp的trick,大致是用另一个dp过程中用到的一些东西作为该dp的状态.这个题比较类似. 考虑求LIS时用到的单调队列.设f[S]为所选取集合为S的方案数,其中在单调队列内的标2 ...
- CF521D Shop 贪心
题意: \(n\)个数,有\(m\)个操作,形如: 1,将\(x_i\)改成\(val_i\) 2,将\(x_i\)加上\(val_i\) 3,将\(x_i\)乘上\(val_i\) 其中第\ ...
- Jsp遍历后台传过来的List
1:使用jstl标签 (可以和自定义标签配合使用) 首先引用jstl标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" ...