制作網頁的很多時候為了頁面美觀都需要圖片能夠做到上下居中、左右居中。網上現實的方式方法也有很多,這里分享我經常使用的一種方法。
// HTML代碼
<div class="row">
<div class="col-xs-3">
<img src="/public/empty_200x100.png" class="imgbg" style="background-image:url('/uploads/demo.jpg');">
</div>
</div>
// CSS 代碼
<style type="text/css">
.imgbg{
width:100%;
background-color: #ebf2f9;
background-position: center;
background-size:contain;
background-repeat: no-repeat;
}
</style>
實現原理
1、先準備一張透明的png圖片。
2、對這個圖片定義一個 Css樣式,添加這幾個屬性:
background-position: center;背景圖片居中
background-size: contain;顯示完整背景圖片
background-repeat: no-repeat;背景圖不重復
3、然后把要顯示的圖片作為背景圖片。
這樣圖片就不會隨著尺寸不同錯位顯示。展示的時候如果需要顯示正方形圖片,只需要制作一個1x1比例的png圖片,另外可以根據自己的要求制作png圖片。
升級處理
在展示圖片的時候,可能有些小伙伴不喜歡把圖片放到style樣式里面,可能會感覺到看起來怪怪的。
style="background-image: url('/uploads/demo.jpg');
我們想要的可能是這樣的展示方式
<img src="/public/empty_200x100.png" data-src="/uploads/demo.jpg" class="imgbg">
這樣其實也簡單,我們可以借助于 jquery 來實現這個功能。代碼如下:
<script type="text/javascript">
$(document).ready(function() {
$("[class='imgbg']").each(function(index, el) {
$(this).css('background-image', 'url(' + $(this).data('src') + ')');
});
});
</script>
PHP 實現
PHP 實現生成圖片也分為二種
1、圖片上傳的時候,按后臺設置的尺寸生成。
2、圖片預覽的時候,按URL中設置的參數生成。
github地址
https://github.com/zjutsxj/autoCropImage
過前端開發的朋友都知道,要使文字在一個div容器垂直居中顯示是很簡單的事,但是如果是要讓一張圖片在div容器中垂直顯示那就有點傷腦筋了,因為圖片是個置換元素,有些特殊的特性,對于前端開發的大牛來說還好,解決方法有很多,比如什么利用js啊之類的,但是這些對于初學者來說就有些難度了,今天小編就把自己平時在項目中用的方法分享給大家,給大家一個參考。
其實小編用的方法也不是什么很高端的技術,算是最low的方法吧,但是很實用,能兼容各種瀏覽器,為了演示,小編直接從某寶商家店鋪里拿了一張商品圖來做演示,因為商品圖都是高清無碼的,且還很大,所以我們在CSS中把圖片的高度設置為200px,div容器的高度為300px,完整的代碼如下:
最終的運行效果如下圖:
可以看到,這個圖片在div中水平、垂直都是在正中間,是不是很完美。這個原理也很簡單,就是在div容器中加了個 <i> 標簽并把它的 display 屬性設置為 inline-block(行內塊元素),讓它去撐開div容器的高度,再把圖片的 vertical-align 屬性設置為 middle 就可以垂直居中了,當然這只是個演示,大家在實際的項目中可以利用 max-width、min-width、max-height、min-height 等屬性讓圖片根據需要自適應,以達到想要的效果。
當然解決方法還有很多種,具體用什么方法需根據自身頁面布局去權衡,總之沒有最好的,只有最適合的,如果你有更好的方法也可以告訴小編哦,一起交流方法,共同進步。
通常首選方法是使用flexbox居中內容。只需三行代碼即可:display:flex,然后使用 align-items:center 和 justify-content:center 將子元素垂直和水平居中。
如下代碼:
html:
<div class="flexbox-centering">
<div>Centered content.</div>
</div>
css:
.flexbox-centering {
display: flex;
justify-content: center;
align-items: center;
height: 100px;
}
使用grid(網格)與flexbox非常相似,也是一種常見的技術,尤其是布局中已經使用網格的情況下。與前一種flexbox技術的唯一區別是它顯示為柵格。
如下代碼:
html:
<div class="grid-centering">
<div class="child">Centered content.</div>
</div>
css:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。