HTML
innerはむだな気がしますが、z-indexを制御する用に設置しています。
html
<div class="bg-scale"> <div class="inner"> <p>Background Scale Animation</p> <a href="#" class="btn-more">Article</a> </div> </div>
CSS
背景画像をafter擬似要素に指定して重ねることで要素を拡大しても、文字などに影響がないようにします。
あとは「bg-scale」に「overflow: hidden;」を指定すればafterを拡大アニメーションしてもはみ出ないですね。
css
.bg-scale { position: relative; overflow: hidden; text-align: center; border-top: solid 1px #596456; border-bottom: solid 1px #596456; text-shadow: 0 0 12px #7b7a35; padding: 60px 0; } .bg-scale:after { position: absolute; content: ""; display: block; width: 100%; height: 100%; top: 0; background: url(bg.jpg) no-repeat center center; -webkit-background-size: cover; -moz-background-size: cover; -ms-background-size: cover; background-size: cover; -webkit-transition: all .3s ease-out; -moz-transition: all .3s ease-out; -ms-transition: all .3s ease-out; transition: all .3s ease-out; } .bg-scale:hover:after { opacity: .8; -moz-transform: scale(1.2); -webkit-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2); } .bg-scale .inner { z-index: 1; position: relative; }