JavaScript可以水平翻转文本

时间:2016-11-25 08:19:35

标签: javascript css3

我想改变网页的方向,我可以使用下面的CSS方法更改它:

.flip {
-moz-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
-ms-filter: fliph; /*IE*/
filter: fliph; /*IE*/
}

并将类翻转添加到正文部分中,如下所示:

    <body class="flip">

如您所知,页面将完全水平翻转,问题是页面中的文本 我们无法读取 ,我正在寻找一种解决方案,在页面中使用 JavaScript到UN-FLIP ONLY TEXTS 。我的意思是只有文字会恢复正常。

  

无论如何使用JavaScript来仅翻转页面中的文本吗?

我非常感谢您对此问题的帮助。

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以简单地使用CSS来解除翻转的文本。

&#13;
&#13;
.flip {
  -moz-transform: scaleX(-1);
  -webkit-transform: scaleX(-1);
  -o-transform: scaleX(-1);
  transform: scaleX(-1);
  -ms-filter: fliph;
  /*IE*/
  filter: fliph;
  /*IE*/
  border: 3px dashed red;
}
.flip>p {
  -webkit-transform: scaleX(-1);
  -o-transform: scaleX(-1);
  transform: scaleX(-1);
  -ms-filter: fliph;
  /*IE*/
  filter: fliph;
}
&#13;
<main class="flip">
  <p>FLIPPING? NO!</p>
</main>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

首先你需要一些使元素翻转的类:

.flip {
    transform: scaleX(-1);
}

然后让我们将这个类添加到没有子元素的每个元素中(这是查找仅包含文本的元素的简单方法):

Array.prototype.slice.call(document.querySelectorAll("body *"))
    .filter(ele => ele.children.length === 0)
    .forEach(e => e.className += " flip");

现在我们只需要将此类添加到body,就是这样:

document.body.className += " flip";

请注意,这种方式不会翻转文本节点,因为它们不是元素,也不能有类。如果您有文本节点,我的建议是将它们包装在<span>中。 请参阅how to get text nodes的答案。

所以只有js的解决方案是:

document.head.innerHTML += "<style>.flip{transform: scaleX(-1);}</style>";

Array.prototype.slice.call(document.querySelectorAll("body *"))
    .filter(ele => ele.children.length === 0)
    .forEach(e => e.className += " flip");

document.body.className += " flip";