Html 用CSS创建一个简单的X,但它没有';你不排队吗? 我试图在CSS中创建一个简单的X形交叉,只有两个 S以45度角交叉并在中间相遇。我试图通过创建一个尺寸为100x100的容器和两个子容器来实现这一点,每个容器的宽度为sqrt(100^2+100^2)(使用毕达哥拉斯定理)并旋转到45度角

Html 用CSS创建一个简单的X,但它没有';你不排队吗? 我试图在CSS中创建一个简单的X形交叉,只有两个 S以45度角交叉并在中间相遇。我试图通过创建一个尺寸为100x100的容器和两个子容器来实现这一点,每个容器的宽度为sqrt(100^2+100^2)(使用毕达哥拉斯定理)并旋转到45度角,html,css,Html,Css,奇怪的是,至少在IE和Firefox中,这并没有产生一个“完美的”X——右边的线条明显比左边的要远。这有什么原因吗 见代码笔: HTML: 解决方案: 这是因为左边的边距偏离了中心点。可以通过添加以下内容来修复此问题: .hamburger div { margin: -2.5px; 这似乎有效,因为似乎存在继承的属性: -webkit-transform-origin: 0px 2.5px; 因此,通过强制边距返回-2.5px,您绕过了继承的原点 在找到解决方案之

奇怪的是,至少在IE和Firefox中,这并没有产生一个“完美的”X——右边的线条明显比左边的要远。这有什么原因吗

见代码笔:

HTML:

解决方案:

这是因为左边的边距偏离了中心点。可以通过添加以下内容来修复此问题:

  .hamburger div {
       margin: -2.5px;
这似乎有效,因为似乎存在继承的属性:

  -webkit-transform-origin: 0px 2.5px;
因此,通过强制边距返回
-2.5px
,您绕过了继承的原点



在找到解决方案之前进行了黑客攻击:

我做了一点小改动来排列它;我所做的只是改变了这一行:

@hyp-length: sqrt(pow(@burger-height, 2) + pow(@burger-width, 2));
为此:

  @hyp-length: sqrt(pow(@burger-height, 1.95) + pow(@burger-width, 2));
因此,完整代码:

body {
  background-color: black;
}

@burger-height: 100px;
@burger-width: 100px;
.hamburger {
  position: relative;
  height: @burger-height;
  width: @burger-width;
}
  .hamburger div {
    position: absolute;
    width: 100%;
    height: 5px;

    background-color: #fff;
    transform-origin: left center;
  }

  @hyp-length: sqrt(pow(@burger-height, 1.95) + pow(@burger-width, 2));
  .hamburger div:nth-child(1) {
    top: 0;
    width: @hyp-length;
    transform: rotate(45deg);
  }
  .hamburger div:nth-child(2) {
    bottom:0;
    width: @hyp-length;
    transform: rotate(-45deg);
  }
body {
  background-color: black;
}

@burger-height: 100px;
@burger-width: 100px;
.hamburger {
  position: relative;
  height: @burger-height;
  width: @burger-width;
}
  .hamburger div {
    position: absolute;
    width: 100%;
    height: 5px;

    background-color: #fff;
    transform-origin: left center;
  }

  @hyp-length: sqrt(pow(@burger-height, 2) + pow(@burger-width, 2));

  .hamburger div:nth-child(1) {
    top: 0;
    width: @hyp-length - 7;
    transform: rotate(45deg);
  }
  .hamburger div:nth-child(2) {
    bottom:0;
    width: @hyp-length - 7;
    transform: rotate(-45deg);
  }
你还想做些什么,还是只是想把它排成一行


p、 另一种方法是:

我改变了:

width: @hyp-length;

因此,完整代码:

body {
  background-color: black;
}

@burger-height: 100px;
@burger-width: 100px;
.hamburger {
  position: relative;
  height: @burger-height;
  width: @burger-width;
}
  .hamburger div {
    position: absolute;
    width: 100%;
    height: 5px;

    background-color: #fff;
    transform-origin: left center;
  }

  @hyp-length: sqrt(pow(@burger-height, 1.95) + pow(@burger-width, 2));
  .hamburger div:nth-child(1) {
    top: 0;
    width: @hyp-length;
    transform: rotate(45deg);
  }
  .hamburger div:nth-child(2) {
    bottom:0;
    width: @hyp-length;
    transform: rotate(-45deg);
  }
body {
  background-color: black;
}

@burger-height: 100px;
@burger-width: 100px;
.hamburger {
  position: relative;
  height: @burger-height;
  width: @burger-width;
}
  .hamburger div {
    position: absolute;
    width: 100%;
    height: 5px;

    background-color: #fff;
    transform-origin: left center;
  }

  @hyp-length: sqrt(pow(@burger-height, 2) + pow(@burger-width, 2));

  .hamburger div:nth-child(1) {
    top: 0;
    width: @hyp-length - 7;
    transform: rotate(45deg);
  }
  .hamburger div:nth-child(2) {
    bottom:0;
    width: @hyp-length - 7;
    transform: rotate(-45deg);
  }
这里的问题似乎是直线比横截面长。行由代码中的
@hyp length
长度定义


p、 美国最后一个解决方案黑客正在改变:

@burger-width: 100px;


这似乎解决了问题,但你知道为什么吗?从数学上讲,这些线不应该按原样正确排列吗?我又添加了两个解,但似乎与您在
@hyp length
中使用的平方根有关。因为你用的是平方根,所以它变成了一个无理数,它会使长度偏离逻辑上看起来的长度。是的,看起来“边距”来自于div的高度,非常感谢:你应该使用下面的一个答案,但是关于他们为什么不排队的原因,答案是线比包含的div长,所以底部:0将被关闭,类似于Top。我认为问题是边界的厚度。如果您尝试将边框减少到1px,则X是正确的。也许,你应该调整旋转来考虑它。
@burger-width: 100px;
@burger-width: 90px;