有问题的旋转()函数〜转换旋转和翻译不适用于单个元素

发布于 2025-01-18 11:31:29 字数 412 浏览 1 评论 0原文

我正在尝试将按钮旋转 180 度。我发现,当在“translate()”函数之前调用“rotate()”函数时,旋转不起作用。

我的问题是:为什么会这样?

第一个代码(不工作):

   .btn--right {
    right: 0;
    top: 50%;
    transform: rotate(180deg);
    transform: translate(50%, -50%);
  }

第二个代码(工作):

   .btn--right {
    right: 0;
    top: 50%;
    transform: translate(50%, -50%);
    transform: rotate(180deg);
  }

I am trying to rotate the button 180 degrees. I found out that when the 'rotate()' function is called before the 'translate()' one, the rotation doesn't work.

My question is: Why it works like that?

1st code(not working):

   .btn--right {
    right: 0;
    top: 50%;
    transform: rotate(180deg);
    transform: translate(50%, -50%);
  }

2nd code(working):

   .btn--right {
    right: 0;
    top: 50%;
    transform: translate(50%, -50%);
    transform: rotate(180deg);
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何以笙箫默 2025-01-25 11:31:30

因为您无法在一个元素上指定两个 transform。第二组 CSS 正在工作,因为 rotate 位于 DOM 顺序的最后。因此它会覆盖 translate。您会注意到,如果将 !important; 添加到您的第一组 CSS(不起作用的那组),它将正常工作,如代码片段中所示。

您可以在单个元素上实现 rotatetranslate,您可以像这样编写:

transform: rotate(180deg) translate(50%, -50%);

.btn--right {
  right: 0;
  top: 50%;
  transform: rotate(180deg)!important;
  transform: translate(50%, -50%);
}
<button class="btn--right">Send</button>

Because you cannot specify two transform's on one element. The second set of CSS is working because the rotate is positioned last in the DOM order. Therefore it is overriding the translate. You'll notice if you add !important; to your first set of CSS (the one not working), it will work just fine as demonstrated in the snippet.

You can achieve rotate and translate on a single element you can write it like so:

transform: rotate(180deg) translate(50%, -50%);

.btn--right {
  right: 0;
  top: 50%;
  transform: rotate(180deg)!important;
  transform: translate(50%, -50%);
}
<button class="btn--right">Send</button>

妄司 2025-01-25 11:31:30

第二个变换属性覆盖第一个

transform: rotate(180deg);
transform: translate(50%, -50%);

变换:转换(50%,-50%);适用

transform: translate(50%, -50%);
transform: rotate(180deg);

transform:rotate:rotate(180deg);适用

body {
  height: 100vh;
  background-color: bisque;
  display: grid;
  place-items: center;
}

.btn--right{
  display: grid;
  place-items: center;
  background-color: red;
  height: 100px;
  width: 100px;
  

  right: 0;
  top: 50%;

  
  transform: rotate(180deg);
  transform: translate(50%, -50%);


  /* transform: translate(50%, -50%);
  transform: rotate(180deg); */
}

.btn--right p {
  color:white;
}
<div class="btn--right">
      <p>Hello</p>
</div>

The second transform property overrides first one

transform: rotate(180deg);
transform: translate(50%, -50%);

transform: translate(50%, -50%); applies

transform: translate(50%, -50%);
transform: rotate(180deg);

transform: rotate(180deg); applies

body {
  height: 100vh;
  background-color: bisque;
  display: grid;
  place-items: center;
}

.btn--right{
  display: grid;
  place-items: center;
  background-color: red;
  height: 100px;
  width: 100px;
  

  right: 0;
  top: 50%;

  
  transform: rotate(180deg);
  transform: translate(50%, -50%);


  /* transform: translate(50%, -50%);
  transform: rotate(180deg); */
}

.btn--right p {
  color:white;
}
<div class="btn--right">
      <p>Hello</p>
</div>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文