如何在整个(div)元素上放一个大叉?
我的页面上有一个人的详细信息 - 姓名,出生日期,地址等等。如果这个人已经过世,我仍然希望显示联系信息(地址,电话号码等),但是我想在所有内容上都放一个大叉,以显示不应该使用它。
我只能想到使用图像,但由于元素的长度和宽度可能会变化,我不确定如何实现。
如何在整个(div)元素上放一个大叉?
我的页面上有一个人的详细信息 - 姓名,出生日期,地址等等。如果这个人已经过世,我仍然希望显示联系信息(地址,电话号码等),但是我想在所有内容上都放一个大叉,以显示不应该使用它。
我只能想到使用图像,但由于元素的长度和宽度可能会变化,我不确定如何实现。
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' preserveAspectRatio='none' viewBox='0 0 100 100'><path d='M100 0 L0 100 ' stroke='black' stroke-width='1'/><path d='M0 0 L100 100 ' stroke='black' stroke-width='1'/></svg>");
background-repeat:no-repeat;
background-position:center center;
background-size: 100% 100%, auto;
演示: http://jsfiddle.net/02ffvyeo/
所有这些,包括演示,都基于https://dev59.com/6GMm5IYBdhLWcg3wdeua#20231370。那个回答画了一个彩色三角形,而这个问题是关于一个十字架的。
var()
来给删除线上色。 - undefined您可以使用:before
和:after
与转换相结合,将X覆盖整个
.container {
position: relative;
background: gray;
padding: 30px;
overflow: hidden; //hide overflow of pseudo elements
}
.container:before, .container:after {
position: absolute;
content: '';
background: red;
display: block;
width: 100%;
height: 30px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
//center the X vertically and horizontally:
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
.container:after {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
transform
属性上方保留-webkit-transform
,以便webkit浏览器可以渲染它。我已经为此编辑了我的答案。 - brouxhaha<div class="deceased">X</div>
会适当扩展(并保存图像回调 :))
如果您不喜欢通过将其大小设置得非常大来剪切X,则需要使用JavaScript在div大小更改时调整其大小。
更好的方法是,您可以使用:after
伪类添加它,并保存额外的div和“X”
.deceased:after
{
content:"X";
position:absolute;
left:0px;
top:0px;
width:100%;
height:100%;
font-size: 1000px; // adjust this a little though it will be clipped by the div
text-align: center;
line-height: 100%;
overflow: hidden;
}
:before
会将其放置在现有内容的“下方”。.deceased:before
{
content:"X";
position:absolute;
left:0px;
top:0px;
width:100%;
height:100%;
font-size: 1000px; // adjust this a little though it will be clipped by the div
text-align: center;
line-height: 100%;
overflow: hidden;
}
更新
我找到了一种仅使用 CSS 的方法...
@media all and (min-width: 50px) { .deceased:before { font-size:0.1em; } }
@media all and (min-width: 100px) { .deceased:before { font-size:0.2em; } }
@media all and (min-width: 200px) { .deceased:before { font-size:0.4em; } }
@media all and (min-width: 300px) { .deceased:before { font-size:0.6em; } }
@media all and (min-width: 400px) { .deceased:before { font-size:0.8em; } }
and so on ....
更新2
一个包含文本的内联SVG将使文本按照div的大小进行缩放...
.deceased:before
{
content: url('data:image/svg+xml;utf8,<svg>....</svg>');
position:absolute;
left:0px;
top:0px;
width:100%;
height:100%;
overflow: hidden;
}
X
,第二个示例可能存在错误,因为整个页面都被禁用了(您无法单击或选择任何内容)。 - user3258926position: relative
,这样 position:absolute
就不会影响整个页面。现在它可以工作了,但唯一的问题是 X 没有按比例伸缩。所以我可能需要使用 JavaScript 来获取容器的尺寸? - user3258926您可以在盒子元素上使用一个class
。
然后,通过该class
,将交叉标志作为背景或假元素添加到其中,使用background-size
或假元素的width/height
和绝对定位。
无论如何,使用类将帮助您为该框制定特定样式,甚至可以是display:none
或opacity:0.5;
pointer-events:none;
,或者您认为符合意义和网站设计的任何内容。
CSS并不是为这种情况而设计的 - div元素的目的是将html分成几个部分,以便您可以对div标签内的元素应用格式(CSS)。您可以尝试将文本格式化为带有删除线。
<p style="text-decoration: line-through">Name</p>
它仍然可读,但显然已经失效。
background-size:cover
的图片是最容易的事情。 - Zach Saucier