私は、カーソルの位置に基づいて左右のトランスフォームを使用して画像を調整するスクリプトを作成しています。
ホバー上の画像をズームするCSSもあります。2つの異なるCSS変換を適用するsimultanesouly
// JavaScript source code
var catchX = 0,
catchY = 0,
x = 0,
y = 0,
burn = 1/28;
function imageWatch() {
x += (catchX - x) * burn;
translate = 'translate(' + x + 'px, ' + y + 'px)';
$('.image-area img').css({
'-webit-transform': translate,
'-moz-transform': translate,
'transform': translate
});
window.requestAnimationFrame(imageWatch);
}
$(window).on('mousemove click', function (e) {
var mouseX = Math.max(-100, Math.min(100, $(window).width()/2 - e.clientX));
catchX = (26 * mouseX)/100;
});
imageWatch();
html,body { height:100%}
body {margin: 0; padding: 0;}
*, *::before, *::after {
content:"\0020";
box-sizing: border-box;
}
.poster {
display: inline-block;
width: 32vw;
height: 100vh;
position:relative;
overflow:hidden !important
}
.image-area {
position: absolute;
width: 100%;
height: 100vh;
opacity: .24;
transition: 2.5s ease;
}
.image-area {
opacity: 1;
}
.image-area > img {
margin-top: -312px;
margin-left: -913px;
width: auto;
/* height: auto */
height: 1000px;
transform: scale(1,1);
transition:8s all;
}
.poster:hover .image-area > img {
transform: scale(1.3,1.3)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="poster">
<div class="image-area">
<img class="poster" src="https://vignette1.wikia.nocookie.net/logopedia/images/f/fc/Sky_Believe_in_better_logo.jpg/revision/latest?cb=20110910152552" alt="Sky" />
</div>
</div>
<div class="poster">
<div class="image-area">
<img class="poster" src="https://vignette1.wikia.nocookie.net/logopedia/images/f/fc/Sky_Believe_in_better_logo.jpg/revision/latest?cb=20110910152552" alt="Sky" />
</div>
</div>
<div class="poster">
<div class="image-area">
<img class="poster" src="https://vignette1.wikia.nocookie.net/logopedia/images/f/fc/Sky_Believe_in_better_logo.jpg/revision/latest?cb=20110910152552" alt="Sky" />
</div>
</div>
私のJSは、transformプロパティを使用している、とので、私のCSSは、それがホバーにズームすることです。私はこれが問題だと思う。
CSSからトランスフォームを削除すると、スクリプトはうまく動作しますが、ホバーをズームしてカーソルに合わせるためには、画像にtransition:8s all
が必要です。
このS.Oは、2つのトランスフォームプロパティを持つことができますが、1行にする必要があることを通知しました。私はどのように私のJavascriptでそれを行うのですか?
https://stackoverflow.com/questions/13769800/how-to-set-a-single-value-of-transform-while-leaving-the-otherの潜在的な重複値 –
あなたは、文字列を自分で解析して構築する必要があります。あるいは、 'matrix'変換を行う方法を傾けてください –