用 javascript 和 css 製作圖片截圖效果
做網站的時候,要做一個有很多圖片併排在一起的排版,因為每張圖片的長寬不一,所以排不好就很容易看起來不整齊,一個選擇是使用瀑布流的方式來排版,就像Pintrest的Pin。另一種則是可以讓圖片限制在一個比例內,如果超過的話就自動遮掉,像Pintrest的Board,剛好Pintrest都有做,拿來一起看就很清楚了。
要截圖很簡單,先用一個div把圖片給包起來,然後再設超過div的部分看不到就好了。
- <div class="img_wrap">
- <img src="img.jpg">
- </div>
css大概類似長這樣
- .img_wrap{
- width:72px;
- height:72px;
- overflow:hidden;
- position:relative;
- }
- img{
- position:absolute;
- }
設position的目的是圖片預設會對齊div的左上角,如果希望圖片自動對齊框框的中間,就要使用position去調整圖片的位置。
然後再用js根據圖片的長寬還有框框的長寬,選擇調整圖片的大小及位置,再加到inline CSS就完成了。
- function cropPhoto($width, $height, $wrapWidth, $wrapHeight){
- if(($width/$height) <= ($wrapWidth/$wrapHeight)){
- $picWidth=$wrapWidth;
- $picHeight=Math.round(($wrapWidth*$height)/$width);
- $shift=($wrapHeight-$picHeight)/2;
- $shift="top: "+$shift+"px";
- }else{
- $picHeight=$wrapHeight;
- $picWidth=Math.round(($wrapHeight*$width)/$height);
- $shift=($wrapWidth-$picWidth)/2;
- $shift="left: "+$shift+"px";
- }
- return {'picHeight': $picHeight, 'picWidth': $picWidth, 'getShift': $shift};
- }
留言