Html 如何转置背景图像

Html 如何转置背景图像,html,css,background-image,Html,Css,Background Image,有没有办法用CSS转置背景图像?(我所说的“转置”是指源图像中的每个像素x,y最终成为背景中的像素y,x。) 范例 源图像: 转置图像: 如果我理解您的问题,您希望将图像旋转90度。沿x方向的像素变为沿y方向的像素。在CSS3中,这是一个转换 #myParentElement { -webkit-transform: rotate(90deg) scaleX(-1) /* updated to add flip */; -ms-transform: rotate(90deg) s

有没有办法用CSS转置背景图像?(我所说的“转置”是指源图像中的每个像素x,y最终成为背景中的像素y,x。)

范例

源图像: 转置图像:

如果我理解您的问题,您希望将图像旋转90度。沿x方向的像素变为沿y方向的像素。在CSS3中,这是一个转换

#myParentElement
{
    -webkit-transform: rotate(90deg) scaleX(-1) /* updated to add flip */;
    -ms-transform: rotate(90deg) scaleX(-1);
    transform: rotate(90deg) scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}
要对背景图像执行此操作,需要将CSS转换应用于具有背景图像的元素的父元素。对元素应用另一个变换,使其内容不被变换

#myParentElement
{
    -webkit-transform: rotate(90deg) scaleX(-1);
    -ms-transform: rotate(90deg) scaleX(-1);
    transform: rotate(90deg) scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}
#myElement
{
    -webkit-transform: rotate(-90deg) scaleX(-1);
    -ms-transform: rotate(-90deg) scaleX(-1);
    transform: rotate(-90deg);
    filter: FlipH;
    -ms-filter: "FlipH";
}

如果我理解你的问题,你想把图像旋转90度。沿x方向的像素变为沿y方向的像素。在CSS3中,这是一个转换

#myParentElement
{
    -webkit-transform: rotate(90deg) scaleX(-1) /* updated to add flip */;
    -ms-transform: rotate(90deg) scaleX(-1);
    transform: rotate(90deg) scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}
要对背景图像执行此操作,需要将CSS转换应用于具有背景图像的元素的父元素。对元素应用另一个变换,使其内容不被变换

#myParentElement
{
    -webkit-transform: rotate(90deg) scaleX(-1);
    -ms-transform: rotate(90deg) scaleX(-1);
    transform: rotate(90deg) scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}
#myElement
{
    -webkit-transform: rotate(-90deg) scaleX(-1);
    -ms-transform: rotate(-90deg) scaleX(-1);
    transform: rotate(-90deg);
    filter: FlipH;
    -ms-filter: "FlipH";
}

事实上,在使用因子
-1
围绕Y轴缩放图像,然后应用
-90度的旋转变换后,可以获得结果图像。试试这个:

div.transposed {
  -webkit-transform-origin:left top;
  -webkit-transform:scaleY(-1) rotate3d(0,0,1,-90deg);    
}
请注意,我们必须旋转
-90deg
而不是
90deg
,因为我们以前使用
scaleY
,它会将Y轴的正方向从上到下(向下)到下到上(向上)。事实上,
scaleY(-1)
等于
rotateX(180度)
,在3D中,这意味着Z轴的正方向将反转(而不是从屏幕向外,而是向内),因此旋转角度应该是
-90度
,而不是我们可能认为的
90度


请在基于webkit的浏览器上测试演示。

事实上,在使用因子
-1
围绕Y轴进行缩放,然后应用
-90deg
的旋转变换后,可以获得结果图像。试试这个:

div.transposed {
  -webkit-transform-origin:left top;
  -webkit-transform:scaleY(-1) rotate3d(0,0,1,-90deg);    
}
请注意,我们必须旋转
-90deg
而不是
90deg
,因为我们以前使用
scaleY
,它会将Y轴的正方向从上到下(向下)到下到上(向上)。事实上,
scaleY(-1)
等于
rotateX(180度)
,在3D中,这意味着Z轴的正方向将反转(而不是从屏幕向外,而是向内),因此旋转角度应该是
-90度
,而不是我们可能认为的
90度

请在基于webkit的浏览器上测试演示。

如果您所说的“转置”是指,它类似于“旋转270度并垂直反射”或“旋转90度并水平反射”

在这里,您可以找到“旋转背景”问题的完整解决方案:

旋转后,您可以通过
transform:scaleY(-1)
transform:scaleX(-1)

反射图像,如果“转置”的意思是,它类似于“旋转270度并垂直反射”或“旋转90度并水平反射”

在这里,您可以找到“旋转背景”问题的完整解决方案:


旋转后,您可以通过
transform:scaleY(-1)
transform:scaleX(-1)
反射图像使用此代码将元素上的背景旋转90度,而不会影响元素本身:

#myelement {
  height: 164px;
  overflow: hidden;
  position: relative;
  width: 79px;
}
#myelement:before {
  background: url("http://i.stack.imgur.com/gMRiV.png") no-repeat;
  content: "";
  height: 79px;
  left: -42px;
  position: absolute;
  top: 42px;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
  width: 164px;
  z-index: -1;
}
以及html代码:

<div id="myelement">test</div>
测试
例如:

使用此代码在不影响图元本身的情况下,将图元上的背景旋转90度:

#myelement {
  height: 164px;
  overflow: hidden;
  position: relative;
  width: 79px;
}
#myelement:before {
  background: url("http://i.stack.imgur.com/gMRiV.png") no-repeat;
  content: "";
  height: 79px;
  left: -42px;
  position: absolute;
  top: 42px;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
  width: 164px;
  z-index: -1;
}
以及html代码:

<div id="myelement">test</div>
测试
例如:

一张描述“转置”的图片很好理解你的意思。根据你的解释,你的意思是将其旋转90°?是的,他似乎想将其逆时针旋转90°。@Bartdude将其翻转45度。我认为它可以通过90度旋转和v/h翻转来完成。你可以通过旋转270度来完成相同的转换。一个描述“转置”的图像将很好地理解你的意思。从你的解释来看,你的意思是将其旋转90度?是的,他似乎想将其逆时针旋转90度。@Bartdude将其绕45度轴翻转。我认为它可以通过90度旋转和v/h翻转来完成。你可以通过旋转270度来完成相同的转换。我认为如果它也围绕垂直/水平轴翻转,这就可以实现。是否可以添加该操作?我不是舒尔您需要所有这些供应商前缀,如果您检查caIuse:您将看到自FF 16起未使用
-moz-
,自Opera 12起未使用
-o-
。所以我认为你需要的只有
-webkit-
-ms-
似乎仍然不起作用。我认为这两个转换应该出现在同一个“css语句”(或者不管它叫什么)中,否则第二个会覆盖第一个。尽管如此,+1,因为这是第一次,如果更正,将更加独立于浏览器。谢谢。然后将背景附加到父元素,子元素将文本或无背景信息恢复正常。如果我错了,请纠正我,但我要说的是(例如)
-webkit transform:scaleX(-1)似乎覆盖,而不是附加到
-webkit transform:rotate(-90度)但是如果你把它全部放在一个语句中
-webkit转换:rotate(-90deg)scaleX(-1)然后它就工作了。我想如果它也绕垂直/水平轴翻转,这就可以了。是否可以添加该操作?我不是舒尔您需要所有这些供应商前缀,如果您检查caIuse:您将看到自FF 16起未使用
-moz-
,自Opera 12起未使用
-o-
。所以我认为你需要的只有
-webkit-
-ms-
似乎仍然不起作用。我认为这两个转换应该出现在同一个“css语句”(或者不管它叫什么)中,否则第二个会覆盖第一个。尽管如此,+1,因为这是第一次,如果更正,将更加独立于浏览器。谢谢。将背景附加到父元素