在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ 一個(gè)圖片布局加自適應(yīng)的請(qǐng)教探討

一個(gè)圖片布局加自適應(yīng)的請(qǐng)教探討

問(wèn)題1. 對(duì)下圖這個(gè)布局,先說(shuō)需求,圖片是用戶上傳,需要正方形展示,面對(duì)用戶上傳圖片的比例不定,請(qǐng)問(wèn)會(huì)怎樣讓它完美展現(xiàn)在自己的盒子里呢?

問(wèn)題2. 只用css實(shí)現(xiàn)這個(gè)布局, 三張圖片寬度平分寬度,間距保持10px不變,用flex?百分比?vw? 我試過(guò)flex和百分比加calc()和vw 圖片高度和寬度怎樣保持一致呢?

我想了解一下大家的經(jīng)驗(yàn)和方式 謝謝大家

圖片描述

回答
編輯回答
萢萢糖
  1. 傳統(tǒng)做法是寫(xiě)一個(gè)div,然后把圖片搞成這個(gè)div的背景圖,加個(gè)定位居中和cover做填充;或者你如果只用img的話也可以試試object-fit屬性,也是寬高取值直接cover就好。
  2. 布局可以用inline-block或者flex應(yīng)該都可以,如果間距都知道的話直接calc配合vw/vmin應(yīng)該就行了,寬高都用一樣的就行了。
2017年2月6日 09:34
編輯回答
避風(fēng)港

看你的問(wèn)題應(yīng)該主要是卡在了這個(gè)圖片寬高相等上邊了,這里有一個(gè)解決辦法,使用padding-bottom/top來(lái)獲取width。
::after處理高度,撐開(kāi)容器,::before渲染實(shí)際內(nèi)容

同時(shí),外層容器使用margin: -$gap$ /2來(lái)實(shí)現(xiàn)移除四周的空隙

Online Demo: https://codepen.io/Jiasm/pen/...
這里用的是background-color模擬,你要用圖片的話,直接寫(xiě)成background-url+background-size: 100% 100%即可

.wrap {
    border: 1px solid blue;
    width: 400px;
}

.border {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    margin: -5px; /* fill panel */
}

.item {
    width: 33.33%;
    position: relative;
}

.item::before {
    display: block;
    content: '';
    width: 100%;
    padding-top: 100%;
}

.item::after {
    content: '';
    position: absolute;
    top: 5px;
    left: 5px;
    right: 5px;
    bottom: 5px;
    background: red;
}
2017年12月23日 01:45
編輯回答
護(hù)她命

問(wèn)題1:你目前的情況是高度定,寬度不定,想要保證按原圖的比例展現(xiàn)圖片,使用js獲取圖片的原始寬、高,然后按原始寬高計(jì)算要展示的寬度,如下:
var img = new Image()
img.src = "url.png";
var naturalWidth = img.naturalWidth,

naturalHeight= img.naturalHeight;

// 假如要展示的圖片寬度是 showHeight,則要展示的圖片寬度如下
var showWidth = (showHeight / naturalHeight)*showHeight
問(wèn)題2:在無(wú)法保證用戶上傳的圖片寬高比一致的情況,只能保證展示的是頂寬或者定高,這種布局建議使用flex

2017年5月6日 20:06
編輯回答
鐧簞噯

問(wèn)題1:圖片用backgroundbackground-size:cover,如果涉及懶加載或者不能用background,不太好搞,要去比較寬高或者剪裁了,一般都是后端剪裁好尺寸傳回來(lái)。

如果同意展示圖片全部,上下或左右有空白的話也可以像下面這樣。

.parent{
    width:200px;
    height:200px;
    position:relative;
}
.child{
    max-width:100%;
    max-height:100%;
    width:auto;
    height:auto;
    position:absolute;
    top:50%;
    left:50%;
    -webkit-transform:translate(-50%,-50%);
    transform:translate(-50%,-50%);
}

圖片描述

問(wèn)題2:列表項(xiàng)容器padding:5px;box-sizing:border-box;display:inline-block,列表容器給出兩邊的留白,設(shè)置font-size:0;防止項(xiàng)之間的間隙,都不需要用flex的。

2018年8月7日 10:46
編輯回答
薄荷糖
//css

.box {
  width: 500px;
}

.img-box {
  width: 33.33%;
  height: 0;
  padding-bottom: 33.3%;
  box-sizing: border-box;
  float: left;
  border-right: 10px solid #ffffff;
  margin-bottom: 10px;
  background: #000 no-repeat center center;
  background-size: contain;
}

.img-box:nth-child(3n) {
  border-right: none;
}
//html

<div class="box">
    <div class="img-box" style="background-image: url(http://pic1.win4000.com/wallpaper/5/532931489604e.jpg)"></div>
    <div class="img-box" style="background-image: url(http://img.zcool.cn/community/0108185543f09e0000019ae906d8f6.jpg@1280w_1l_2o_100sh.jpg)"></div>
    <div class="img-box" style="background-image: url(http://img.zcool.cn/community/01626057ff29a1a84a0d304f3b5991.jpg@1280w_1l_2o_100sh.jpg)"></div>
    <div class="img-box" style="background-image: url(http://pic1.win4000.com/wallpaper/5/532931489604e.jpg)"></div>
    <div class="img-box" style="background-image: url(http://img.zcool.cn/community/0108185543f09e0000019ae906d8f6.jpg@1280w_1l_2o_100sh.jpg)"></div>
    <div class="img-box" style="background-image: url(http://img.zcool.cn/community/01626057ff29a1a84a0d304f3b5991.jpg@1280w_1l_2o_100sh.jpg)"></div>
  </div>
2017年5月6日 04:52