2017-05-05 117 views
-2

我是新来的,有一个小问题。弹出的CSS隐藏元素

我发现这个这里有一些问题它是如何工作的,我怎么可能改变豆蔻事情:

body { 
 
    font-family: Arial, sans-serif; 
 
    background: url(http://www.shukatsu-note.com/wp-content/uploads/2014/12/computer-564136_1280.jpg) no-repeat; 
 
    background-size: cover; 
 
    height: 100vh; 
 
} 
 

 
h1 { 
 
    text-align: center; 
 
    font-family: Tahoma, Arial, sans-serif; 
 
    color: #06D85F; 
 
    margin: 80px 0; 
 
} 
 

 
.box { 
 
    width: 40%; 
 
    margin: 0 auto; 
 
    background: rgba(255,255,255,0.2); 
 
    padding: 35px; 
 
    border: 2px solid #fff; 
 
    border-radius: 20px/50px; 
 
    background-clip: padding-box; 
 
    text-align: center; 
 
} 
 

 
.button { 
 
    font-size: 1em; 
 
    padding: 10px; 
 
    color: #fff; 
 
    border: 2px solid #06D85F; 
 
    border-radius: 20px/50px; 
 
    text-decoration: none; 
 
    cursor: pointer; 
 
    transition: all 0.3s ease-out; 
 
} 
 
.button:hover { 
 
    background: #06D85F; 
 
} 
 

 
.overlay { 
 
    position: fixed; 
 
    top: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
    right: 0; 
 
    background: rgba(0, 0, 0, 0.7); 
 
    transition: opacity 500ms; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
} 
 
.overlay:target { 
 
    visibility: visible; 
 
    opacity: 1; 
 
} 
 

 
.popup { 
 
    margin: 70px auto; 
 
    padding: 20px; 
 
    background: #fff; 
 
    border-radius: 5px; 
 
    width: 30%; 
 
    position: relative; 
 
    transition: all 5s ease-in-out; 
 
} 
 

 
.popup h2 { 
 
    margin-top: 0; 
 
    color: #333; 
 
    font-family: Tahoma, Arial, sans-serif; 
 
} 
 
.popup .close { 
 
    position: absolute; 
 
    top: 20px; 
 
    right: 30px; 
 
    transition: all 200ms; 
 
    font-size: 30px; 
 
    font-weight: bold; 
 
    text-decoration: none; 
 
    color: #333; 
 
} 
 
.popup .close:hover { 
 
    color: #06D85F; 
 
} 
 
.popup .content { 
 
    max-height: 30%; 
 
    overflow: auto; 
 
} 
 

 
@media screen and (max-width: 700px){ 
 
    .box{ 
 
    width: 70%; 
 
    } 
 
    .popup{ 
 
    width: 70%; 
 
    } 
 
}
<h1>Popup/Modal Windows without JavaScript</h1> 
 
<div class="box"> 
 
\t <a class="button" href="#popup1">Let me Pop up</a> 
 
</div> 
 

 
<div id="popup1" class="overlay"> 
 
\t <div class="popup"> 
 
\t \t <h2>Here i am</h2> 
 
\t \t <a class="close" href="#">&times;</a> 
 
\t \t <div class="content"> 
 
\t \t \t Thank to pop me out of that button, but now i'm done so you can close this window. 
 
\t \t </div> 
 
\t </div> 
 
</div>

我创造了我豆蔻模板。 在此脚本上,当弹出窗口可见时,叠加类会更改背景颜色。

难道有可能隐藏背景元素h1和框与CSS不改变背景和没有javascript?

为了让它更干净,我想隐藏弹出框后面的内容而不是.overlay {background:rgba(0,0,0,0.7); }

问候,丹

+2

你是什么意思的背景元素..他们已经隐藏覆盖..你想什么,请更清晰和具体。 –

+0

好吧我试着让它更清晰, .overlay { 设置一个带背景的新图层。 但是,我想隐藏弹出窗口后面的内容,而不是新的背景。 我发现了一些隐藏/显示复选框或按钮上的项目。但是,如果这可以用于弹出窗口,我不知道。 –

回答

0

整体效果是由在div.overlay包含要显示所有内容的事实来实现。诀窍是:

  • 通常隐藏容器
  • 通过链接到它
  • 引用时激活它,出示容器通过链接到别的东西
  • 去激活它。

这使用了一个相对较新的CSS伪类:target。它的工作方式是:

  • 的URL有一个片段标识符(#something
  • id片段匹配得到:target伪类
  • 元素如果URL的变化,那么其他一些元素可以有针对性。

你会发现,两个锚涉及:

  • 显示弹出,锚具有#popup1,其中popup1是弹出DIV
  • 隐藏弹出,锚的id有#,其中最重要的是而不是#popup1,这样div就不再被定位。

要回答的另一部分,使用这种技术,只有div的内容可以隐藏&显示,所以如果你想隐藏或显示其他内容,也不会以这种方式工作。为此,您将需要JavaScript。

+0

好的,最好谢谢, 我发现了一种隐藏弹出框内容的方法, 已将背景图像设置为.overlay类,而不是颜色。 但很高兴知道其他方式在没有javascript的情况下无法正常工作。 :)最好感谢您的描述 –