简体   繁体   English

CSS3:如何同时旋转和缩放 img?

[英]CSS3: How to rotate and scale an img at the same time?

I'm very confused.我很困惑。 Why can't I use scale and rotate at the same time?为什么不能同时使用缩放和旋转? I've tried this, but it does not work:我试过这个,但它不起作用:

.rotate-img{
    -webkit-transform:scale(2,2);
    -webkit-transform:rotate(90deg);
    margin-left:20%;
    margin-top:10%;
}

I tried jQuery, but does not work neither:我试过 jQuery,但也不起作用:

<style>
.zoom{
        -webkit-transform:scale(2,2);
        margin-left:20%;
        margin-top:10%;
    }
</style>
<script>

    $(document).ready(function(){
        $("img").dblclick(function(){

            $(this).addClass("zoom");

            $(this).contextmenu(function(){
                $(this).css("-webkit-transform","rotate(90deg)");
                return false;
            })
        });
    })

    </script>

How could I scale an img and when I clic the right click then rotate 90 deg.我怎么能缩放一个 img,当我点击右键然后旋转 90 度。

You can rotate an image with CSS using the transform property with a rotate(**deg) value您可以使用带有rotate(**deg)值的transform属性使用 CSS 旋转图像

 .rotate-img { -webkit-transform : rotate(90deg) scale(0.2); /* Chrome, Opera 15+, Safari 3.1+ */ -ms-transform : rotate(90deg) scale(0.2); /* IE 9 */ transform : rotate(90deg) scale(0.2); /* Firefox 16+, IE 10+, Opera */ left : -200px; position: relative; }
 <img class="rotate-img" src="https://appharbor.com/assets/images/stackoverflow-logo.png" />

When applying transform on multiple lines, it's like any other CSS property, and it gets overwritten so only the last line is used, just like with something like :在多行上应用transform时,它就像任何其他 CSS 属性一样,它会被覆盖,因此只使用最后一行,就像这样:

.myclass {
    top: 100px;
    top: 400px;
}

only the last one would apply, so you'll need to put all the transformations in one transform .只有最后一个适用,因此您需要将所有转换放在一个transform

Well, building on top of adeneo's answer, one that includes all browers capable of CSS transform .好吧,建立在 adeneo 的答案之上,其中包括所有能够进行CSS 转换的浏览器。

.rotate-img {
    -webkit-transform: rotate(90deg) scale(2.2); /* Chrome 4+, Op 15+, Saf 3.1, iOS Saf 3.2+ */
       -moz-transform: rotate(90deg) scale(2.2); /* Fx 3.5-15 */
        -ms-transform: rotate(90deg) scale(2.2); /* IE 9 */
         -o-transform: rotate(90deg) scale(2.2); /* Op 10.5-12 */
            transform: rotate(90deg) scale(2.2); /* Fx 16+, IE 10+ */
    margin: 10% 0 0 20%;
}

See extended JS Fiddle .请参阅扩展JS Fiddle

You do not need to write code separately to use both rotate and scale u can use it look like this :你不需要单独编写代码来使用旋转和缩放你可以像这样使用它:

transform: scale(1.3) rotate(7deg);变换:缩放(1.3)旋转(7度);

You can scale & rotate at the same time, but you HAVE to do it on the same line, otherwise you overwrite the prievius value with the new value.您可以同时缩放和旋转,但必须在同一行上进行,否则您会用新值覆盖 prievius 值。

 let htmlElement = document.getElementById("rotate-img"); let scaleX = -0.3; let scaleY = 0.2; let angle = 45 ; // NOTICE!! THE BACK-TICKS, not regular quotes. Will decode variables inside before printing. // Code for Safari htmlElement.style.WebkitTransform = `scale( ${scaleX}, ${scaleY} ) rotate( ${angle}deg )`; // Code for IE9 htmlElement.style.msTransform = `scale( ${scaleX}, ${scaleY} ) rotate( ${angle}deg )`; // Standard syntax htmlElement.style.transform = `scale( ${scaleX}, ${scaleY} ) rotate( ${angle}deg )`;
 <img id="rotate-img" src="https://appharbor.com/assets/images/stackoverflow-logo.png" />

Also notice that any already existing style on that element will be overwritten, unless you save that style into a (string-)variable first & add (append or concatenate) the new styles to that saved variable & then add the whole variable back onto the html-element.另请注意,该元素上任何已存在的样式都将被覆盖,除非您先将该样式保存到(字符串)变量中并将新样式添加(附加或连接)到该保存的变量中,然后将整个变量添加回html 元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM