在保持对齐的同时以相反的方向旋转 div 和文本?

Posted

技术标签:

【中文标题】在保持对齐的同时以相反的方向旋转 div 和文本?【英文标题】:Rotating div AND text in opposite directions whilst keeping them aligned? 【发布时间】:2015-10-08 10:11:12 【问题描述】:

所以我正在制作这个按钮,我想在悬停时设置动画。到目前为止,它工作得很好,但我正在使用的字体真棒图标在旋转时似乎会使其不对齐。

基本上,我在悬停时将父 div 旋转了 45 度。

为了解决这个问题,我还在悬停时将字体真棒图标旋转了 -45 度。

但是由于某种原因,这导致它向左移动。我如何定位它以使其在悬停时不会移动(或至少不会给人以移动的印象)。

在这里查看 jsfiddle: https://jsfiddle.net/krustytoast/eu4dugdz/

<!-- html -->
<div id="scroll"><i class="fa fa-angle-down scrollicon"></i></div>
#scroll 
width:70px;
height: 70px;
color: #FFFFFF;
margin-right: auto;
margin-left: auto;
font-size: 75px;
text-align: center;
vertical-align: middle;
line-height: 64px;
border-radius: 50%;
border-style: solid;
border-width: 5px;
border-color: #FFFFFF;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;


.scrollicon 
line-height: 64px;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;



#scroll:hover .scrollicon,
#scroll:hover ~ .scrollicon 

line-height: 74px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);



#scroll:hover 
cursor: pointer;
border-radius: 0%;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);

我网站上的运动比这个 btw 要明显得多。

提前致谢!

【问题讨论】:

我已经用试验和错误填充修复了它(有点),看起来还不错。仍然想知道是否有更清洁/更有效的方法来做到这一点。 【参考方案1】:

将内部i 的高度和宽度保持在父尺寸的100%! 为了使用它的大小进行操作,请将其设置为inline-block

我的看法:

bodybackground:#678;

#scroll 
  width:      70px;
  height:     70px;
  cursor:     pointer;
  transition: 0.5s;
  border:     5px solid #fff;
  border-radius: 50%;


#scroll > i 
  display:     inline-block;
  width:       100%;
  height:      100%;
  line-height: 74px;
  font-size:   74px;
  text-align:  center;
  color:       white;
  transition:  0.5s;


#scroll:hover 
  border-radius: 0;
  transform:     rotate(45deg);

#scroll:hover > i 
  transform: rotate(-45deg);
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />

<div id="scroll">
  <i class="fa fa-angle-down"></i>
</div>

【讨论】:

太棒了!看起来是这样的。我回家后会试一试,我会告诉你的,干杯伙伴。

以上是关于在保持对齐的同时以相反的方向旋转 div 和文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 div 中间对齐旋转的文本

旋转对象以面对相反的方向

如何左对齐和垂直对齐标题中的图像并将文本水平保持在div的中心[重复]

表格单元格中旋转文本的垂直对齐方式

如何在保持垂直位置的同时使 div 与父级的右侧对齐?

旋转几何图形以对齐方向向量