周记6——css实现类似朋友圈九宫格缩略图完美展示

公司有在做一个类似qq空间的开发,发表说说避免不了的要有图片展示。
产品提出的空间缩略图的展示类似*信朋友圈那种效果——图片不变形、能看到中间部分。
这里给出3种解决方案(jsbin地址失效时可复制代码到jsbin.com看效果):

1、 img + position + translate

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
  .img_thum,.img_thum2,.img_thum3{
    position:relative;
    width:500px;
    height:500px;
    overflow:hidden;
    border:1px solid red;
  }
  .img_thum img,
  .img_thum2 img,
  .img_thum3 img{
    position:absolute;
    top:50%;
    left:50%;
    transform: translate(-50%,-50%);
    min-width: 100%;  /* 针对小图标 */
    min-height: 100%;  /* 针对小图标 */
    max-width: 200%; /* 针对太宽的图 -可能变形 */
    max-height: 200%; /* 针对太高的图 -可能变形 */
  }
  </style>
</head>
<body>
<div class="img_thum">
  <img src="http://img.88tph.com/subject/20181010/1258053ed87b46ef9341d3b72a2da682.jpg!/fw/300" alt=""> /* 300*235 */
</div>
<div class="img_thum2" style="margin-top:20px;">
  <img src="http://img.88tph.com/homepage/20181029/4a856635a175482f9cc068d2c1e8b585.jpg!fw1200" alt=""> /* 1200*320 */
</div>
<div class="img_thum3" style="margin-top:20px;">
  <img src="http://img.taopic.com/uploads/allimg/140724/235063-140H410412090.jpg" alt="">  /* 1000*1000 */
</div>
</body>
</html>

jsbin地址:https://jsbin.com/dakenupoqu/edit?html,output

可以看出,img和img_out大小差不多时显示符合要求,但img像素过大时,看到的缩略图就有点“管中窥豹”了...所以这种方案慎用!

2、background-imae + background-size + background-center

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>background-imae+background-size+background-center</title>
  <style>
    .img_thum,.img_thum2,.img_thum3{
      position:relative;
      width:500px;
      height:500px;
      overflow:hidden;
      border:1px solid red;
      background-size: cover;
      background-position: center;
    }
    .img_thum{
      background-image: url('http://img.88tph.com/subject/20181010/1258053ed87b46ef9341d3b72a2da682.jpg!/fw/300');
    }
    .img_thum2{
      background-image: url('http://img.88tph.com/homepage/20181029/4a856635a175482f9cc068d2c1e8b585.jpg!fw1200');
    }
    .img_thum3{
      background-image: url('http://img.taopic.com/uploads/allimg/140724/235063-140H410412090.jpg');
    }
  </style>
</head>
<body>
<div class="img_thum">
  /* 300*235 */
</div>
<div class="img_thum2" style="margin-top:20px;">
    /* 1200*320 */
</div>
<div class="img_thum3" style="margin-top:20px;">
   /* 1000*1000 */
</div>
</body>
</html>

jsbin地址:https://jsbin.com/xamowokaki/edit?html,output
对比第一种方案,img和img_out只要比例差不多时显示就符合要求,不要求图片大小和显示区域大小差不多。但img像素过大,同时比例差太多时,看到的缩略图也会出现“管中窥豹”的现象。

这种方案算是最完美的实现了,但如果你有语义化强迫症,觉得缩略图属于内容,一定要用img标签,那就推荐第三种实现方式:

3、object-fit

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
  .img_thum,.img_thum2,.img_thum3{
    position:relative;
    width:500px;
    height:500px;
    overflow:hidden;
    border:1px solid red;
  }
  .img_thum img,
  .img_thum2 img,
  .img_thum3 img{
    width:100%; /* 必须  */
    height:100%; /* 必须  */
    object-fit: cover;
  }
  </style>
</head>
<body>
<div class="img_thum">
  <img src="http://img.88tph.com/subject/20181010/1258053ed87b46ef9341d3b72a2da682.jpg!/fw/300" alt="">  /* 300*235 */
</div>
<div class="img_thum2" style="margin-top:20px;">
  <img src="http://img.88tph.com/homepage/20181029/4a856635a175482f9cc068d2c1e8b585.jpg!fw1200" alt="">   /* 1200*320 */
</div>
<div class="img_thum3" style="margin-top:20px;">
  <img src="http://img.taopic.com/uploads/allimg/140724/235063-140H410412090.jpg" alt="">  /* 1000*1000 */
</div>
</body>
</html>

jsbin地址:https://jsbin.com/vulumexabo/edit?html,output

这种方案兼容性不是很好,效果类似第二种方案。

不知道object-fit是啥?链接送上:https://www.zhangxinxu.com/wordpress/2015/03/css3-object-position-object-fit/

兼容参考:https://blog.csdn.net/bigbear00007/article/details/80103109

最后补充一点,当图片的比例和规范相差很大时,是没有办法实现这2点需求的。所以,在作图时要注意了!

原文地址:https://www.cnblogs.com/chenwenhao/p/9900372.html

时间: 2024-10-14 02:27:17

周记6——css实现类似朋友圈九宫格缩略图完美展示的相关文章

Masonry 布局 cell 高度适应的一种方案(实现类似朋友圈简单布局)

来源:伯乐在线 - 夏天然后 链接:http://ios.jobbole.com/89298/ 点击 → 申请加入伯乐在线专栏作者 前言: 我模仿的是微博的布局所以也就没有 评论动态刷新cell. 1.什么人群适合看? 好奇Masonry使用的, 听过没用过, 没有深入的接触过的 可以看. 2.为什么要写? 很多文章都是这个原因 1 备忘 2 给需要的人 -.- 3.这篇可以了解哪些? Masonry + HYBMasonryAutoCellHeight + TTTAttributedLabel

ios开发-日期处理(类似朋友圈,微博等的发送时间)

ios开发中,我们经常要处理从服务器获取的时间.类似朋友圈,微博这些应用.我们经常可以看到“刚刚”,“31分钟前发表”,“昨天5点”,之类的字样. 当时我们从服务器端获取的都是那条朋友圈信息,或者微博的创建时间.所以我们每次显示数据的时候,都需要根据跟当前的时间做对比,按照格式,算出 我们想要的结果. 例如,我们从服务器获取的时间,大概都类似于  Sun May 24 12:12:00 +0800 2015 我们还是先详细说明一下日期格式吧 年 y 将年份 (0-9) 显示为不带前导零的数字 y

为类似朋友圈的需求所做的图片压缩处理

1 package com.goalwisdom.gwnis.util.imgCompress; 2 import java.io.*; 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.awt.*; 6 import java.awt.image.*; 7 import javax.imageio.ImageIO; 8 9 import com.goalwisdom.gwnis.base.ServerCon

自定义微信发送给好友,分享到朋友圈的缩略图,链接,标题和摘要

微信取消了微信公众平台前端网页上添加分享到朋友圈,关注微信等按钮,目前我们所能做的唯一定制化就是自定义微信发送给好友,分享到朋友圈的缩略图,链接,标题和摘要.今天刚好遇到分享下代码: <script type="text/javascript">var dataForWeixin={    appId:"",    MsgImg:"$dataForWeixin['MsgImg']",    TLImg:"$dataForWe

借助云开发实现小程序朋友圈的发布与展示丨实战

知识技能点 1,小程序云开发 2,小程序云存储 3,小程序云数据库 4,图片大图预览 5,图片选择与删除 先给大家画个发布的流程图 下面是我们真正存到数据库里的数据. 然后我们在朋友圈页只需要请求数据库里的数据,然后展示到页面就如下图所示 所以我们接下来就来实现发布和展示的功能 发布朋友圈 一,首先要创建一个小程序项目 这里就不多说了,注意:一定要用自己的appid,所以你需要注册一个小程序(个人的就行) 二,创建发布页面 我们发布页布局比较简单,一个文字输入框,一个图片展示区域,一个发布按钮.

一百行代码实现微信朋友圈九宫格图片显示

前言 很多时候我们都在刷微博或者微信朋友圈的时候都会看到很多图片,而这些图片的显示跟我们平时很多控件的显示方式都不一样,而且,当我们仔细去观察后就会发现,他加载的图片都是根据图片数量动态加载的,根据不同的图片数量来用不同的布局显示 当图片是4张的时候,就会形成一个2x2的正方形,除了一张的情况,另外的都是按照九宫格的方式显示和排列图片的.那么这种布局是怎么实现的呢,一开始,好多人都可能认为用原生的GridView就能搞掂,但是,却有几种特殊的情况是GridView解决不了的,例如4张图片的情况,

阿里大神动态教你ViewGroup(实现微信朋友圈九宫格图片控件)你还不来看看吗?

简介 最近项目里有个类似微信朋友圈的九图控件的需求,Github找了一下,发现都不太满足需求,我需要单张图片的时候可以按照图片宽高比列在一定范围内自适应,而大多开源项目单张图片也是一个小正方形,所以,干脆自己动手写一个 项目源码 具体自定义NineImageLayout过程,可以查看NineImageLayout. 效果图如下: 主要功能如下: 1:单张图片的时候支持按照图片宽高比列在设定区域内自适应2:Adapter方式绑定数据和UI3:图片点击事件回调4:设置图片间隔大小5:自由通过Glid

iOS 类似朋友圈的图片浏览器SDPhotoBrowser

SDPhotoBrowser.Demo 1.在文件SDBrowserImageView.m中有用SDWebImage到网络加载图片 需要的注释去掉即可 #import "ViewController.h" #import "SDPhotoBrowser.h" @interface ViewController ()<SDPhotoBrowserDelegate> { NSMutableArray * arrayImage; } @end @impleme

返享微信“卖”宝马,暴露朋友圈营销本质

微商发展至今,热度已过,失去了兴奋剂的刺激性之后,说好听一点微商回归理性,说难听一点微商大势已去,当然并不是全盘否定微商的市场价值,只是说微商不在有之前被鼓吹的那么神奇了,朋友圈可以有商业元素,但肯定不是简单粗暴吹嘘的刷屏销售. 事实已经证明暴力刷屏的微商并不具备"颠覆"能力,因为微信朋友圈.微博.QQ空间等社交展示平台的根本还在"社交",不基于兴趣的信息奸视容易过分打扰用户的注意力,有违社交的本质. 微商行业正在演变,第三方平台为成熟的品牌方提供分销平台成为新的市