HTML5實踐 -- 如何使用css3豐富我們的圖片樣式 - part2


  轉載請注明原創地址:http://www.cnblogs.com/softlover/archive/2012/11/23/2780892.html

 

  之前的教程《HTML5實踐 -- css3圖片樣式》,我介紹了如何為圖片添加background-image包裝,借助box-shadow 和 border-radius為圖片設置多種多樣的樣式,有興趣的朋友可以回頭閱讀。但是最近我在設計 PhotoTouch 主題的時候遇到了問題,background-image大小不能調整,這對於響應式設計就不太理想了。今天我們將嘗試解決問題。

  demo預覽地址:http://webdesignerwall.com/demo/css3-image-styles-part-2/

 

  問題

  大多數瀏覽器對圖片的border-radius 和內嵌 box-shadow效果渲染的並不是很完美。這也就意味着,你不能為圖片創建浮雕、高光和壓縮等效果。

 

  之前的解決方案

  在之前的解決方案中,我們為圖片的包裝添加background-image屬性,解決了上述問題。

  background-image存在的問題

  使用background-image的問題是,他不能實現圖片大小的動態縮放。所以,這種方式對於要求圖片縮放的響應式設計來說就不那么適用了。

 

  新解決方案

  新解決方式和之前的有些相似,我們把css3的效果添加到圖片遮罩層 :after 偽類上,這樣做的好處是圖片保持了完整性和可收縮性。

  實現動態效果的jquery語句

  jquery會查詢#demo下面所有的圖片,然后為他們動態添加 span 包裝。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    $('#demo img').each(function() {
        var imgClass = $(this).attr('class');
        $(this).wrap('<span class="image-wrap ' + imgClass + '" style="width: auto; height: auto;"/>');
        $(this).removeAttr('class');
    });

});
</script>

  輸出結果

  上面的代碼會輸出下面的結果:

<span class="image-wrap " style="width: auto; height: auto;">
    <img src="image.jpg">
</span>

  css技巧

  css技巧很簡單,遮罩的效果被用在了.image-wrap:after 上面,border-radius 同時用在了圖片和.image-wrap:after上面,來實現樣式效果。

  css 

.image-wrap {
    position: relative;
    display: inline-block;
    max-width: 100%;
    vertical-align: bottom;
}
.image-wrap:after {
    content: ' ';
    width: 100%;
    height: 100%;
    position: absolute;
    top: -1px;
    left: -1px;
    border: solid 1px #1b1b1b;

    -wekbit-box-shadow: inset 0 0 1px rgba(255,255,255,.4), inset 0 1px 0 rgba(255,255,255,.4), 0 1px 2px rgba(0,0,0,.3);
    -moz-box-shadow: inset 0 0 1px rgba(255,255,255,.4), inset 0 1px 0 rgba(255,255,255,.4), 0 1px 2px rgba(0,0,0,.3);
    box-shadow: inset 0 0 1px rgba(255,255,255,.4), inset 0 1px 0 rgba(255,255,255,.4), 0 1px 2px rgba(0,0,0,.3);

    -webkit-border-radius: 7px;
    -moz-border-radius: 7px;
    border-radius: 7px;
}

.image-wrap img {
    vertical-align: bottom;

    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4);
    -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4);
    box-shadow: 0 1px 2px rgba(0,0,0,.4);

    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    border-radius: 6px;
}

 

  圖片樣式

  很多不同的效果,例如:浮雕、摳圖、壓縮和高光等,都可以通過使用多個內嵌box-shadows屬性來實現。當然你也可以通過使用:before,來實現另外的布局效果,例如高光。可以查看demo源代碼,去了解更多詳情。之后,可以調整你瀏覽器窗口的大小,來查看圖片大小是否發生了變化。

 

  瀏覽器兼容

  這個技巧,只要是支持 Javascript 和 CSS3 的大多數現代瀏覽器都支持,例如:Chrome, Firefox, Safari, and IE9+。

 

  原文地址:http://webdesignerwall.com/tutorials/css3-image-styles-part-2

 

HTML5實踐系列


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM