2014-06-06 2 views
0

두 개의 단추, login 및 join이있는 머리글이 있습니다. 사용자가 단추 중 하나를 가리키면 몇 개의 입력과 단추가있는 컨테이너를 놓을 수 있습니다. 나는 CSS로와 함께 퇴색하는 드롭 다운을 원하지만 나는 그것을 얻을 수 없다. 아마 다른 좋은 방법이있을 것이다. 감사합니다. 여기에 fiddle이 있습니다.투명도가 opacity에서 작동하지 않습니다.

HTML :

<div id="membership_container"> 
    <div id="login_button"> 
     <span id="login_text">Login</span> 
     <div class="form_containers" id="login_box"> 
      <div class="form_inner_containers"> 
       <form action="/login" method="POST"> 
        <input class="inputs" placeholder="Email" type="text" name="login_email"/> 
        <input class="inputs" placeholder="Password" type="password" name="login_password"/> 
        <input class="buttons" type="submit" value="Login"/> 
       </form> 
      </div> 
     </div> 
    </div><!-- 
    --><div id="join_button"> 
     <span id="join_text">Join</span> 
     <div class="form_containers" id="join_box"> 
      <div class="form_inner_containers"> 
       <form action="/join" method="POST"> 
        <input class="inputs" placeholder="Your Name" type="text" name="name"/> 
        <input class="inputs" placeholder="Email" type="text" name="email"/> 
        <input class="inputs" placeholder="Password" type="password" name="password"/> 
        <input class="buttons" type="submit" value="Join"/> 
       </form> 
      </div> 
     </div> 
    </div> 
</div> 

CSS : 그 모든 요소에

#membership_container { 
    float: right; 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    height: 100%; 
    margin: 0px; 
    padding: 0px; 
    background-color: #444444; 
    text-align: center; 
} 
#login_button { 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    float: left; 
    height: 100%; 
    margin: 0px; 
    padding: 0px 10px; 
    background-color: #444444; 
    border-left: 2px solid #7B7B7B; 
    border-right: 2px solid #7B7B7B; 
    cursor: pointer; 
    cursor: hand; 
} 
#login_button:hover { 
background-color: #696969; 
} 
#login_button #login_box { 
display: none; 
opacity: 0.0; 
} 
#login_button:hover #login_box { 
display: block; 
opacity: 1; 
} 
#login_text { 
    position: relative; 
    margin: 9px 0px 0px; 
    text-align: center; 
    color: white; 
    display: inline-block; 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 13px; 
} 
#join_button { 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    float: left; 
    height: 100%; 
    margin: 0px; 
    background-color: #444444; 
    padding: 0px 10px; 
    border-right: 2px solid #7B7B7B; 
    cursor: pointer; 
    cursor: hand; 
} 
#join_button:hover { 
background-color: #696969; 
} 
#join_button:hover #join_box { 
display: block; 
opacity: 1.0; 
} 
#join_text { 
    position: relative; 
    margin: 9px 0px 0px; 
    text-align: center; 
    color: white; 
    display: inline-block; 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 13px; 
} 

.button_blur { 
    background-color: #444444; 
} 
.button_blur:hover { 
    background-color: #696969; 
} 
.button_focus { 
    background-color: #696969; 
} 
.form_containers { 
    z-index: 10; 
    position: absolute; 
    display: none; 
    opacity: 0.0; 
    border: 5px solid #888888; 
    border-radius: 10px 0px 10px 10px; 
    background-color: #F1F1F1; 
    -o-transition: opacity .8s linear; 
    -ms-transition: opacity .8s linear; 
    -moz-transition: opacity .8s linear; 
    -webkit-transition: opacity .8s linear; 
    transition: opacity .8s linear; 
} 
#login_box { 
    top: 35px; 
    right: -2px; 
    /*left: -115px;*/ 
} 
#join_box { 
    top: 35px; 
    right: -2px; 
    /*left: -73px;*/ 
} 
.form_inner_containers { 
    position: relative; 
    margin: auto auto; 
    display: block; 
    background-color: #F1F1F1; 
    border-radius: 10px; 
    border: 0px; 
} 
.form_hidden { 
    display: none; 
} 
.form_shown { 
    display: block; 
} 
.inputs { 
    border-radius: 8px; 
    background-color: white !important; 
    outline: none; 
    border: 0px; 
    font-size: 22px; 
    padding: 10px; 
    margin: 10px; 
    box-shadow: 0px 0px 0px grey; 
} 
.inputs:focus { 
    box-shadow: 3px 3px 3px grey; 
} 
.buttons { 
    position: relative: 
    display: block; 
    background-color: #00ADEF; 
    margin: 10px; 
    border-radius: 8px; 
    padding: 10px 15px 8px; 
    width: 269px; 
    outline: none; 
    font-size: 22px; 
    border: 0px; 
    cursor: pointer; 
    cursor: hand; 
    color: #F1F1F1; 
} 
.buttons:hover { 
    background-color: #18B4EF; 
} 
.buttons:active { 
    background-color: #91D6F0; 
    color: #F1F1F1; 
    outline: none; 
} 

답변

1

display: none;이 당신의 전환을 속이고있다. true 또는 false이고 둘 사이에 CSS가 없으므로 아무 것도 표시 할 수 없습니다.

Here's a JSFiddle

+0

드롭 다운이있는 버튼 아래로 마우스를 가져 가면 문제가 사라집니다. – BestAnswer

2

은로 설정되어 포함 "디스플레이 : 없음;" 그들을 숨기기 위해서. 호버에서는 'display : block'으로 설정되어 즉시 표시되며 불투명도 전환은 무시됩니다. 개인적으로, 나는이 "버그"가 매우 짜증나는 것을 발견했습니다 (버그는 아니지만 성가신 것입니다).

두 가지 해결 방법은 Javascript (지저분한) 및 CSS 키 프레임 애니메이션을 사용하는 것입니다. 본인이 아는 http://hschwarz77.wordpress.com/2013/10/16/css-transition-from-display-none-to-display-block-on-hover/

, 이들은 완전히 숨겨진 사업부가 할 수있는 유일한 솔루션입니다. (사용할 수 없게 ... 가시성 : 숨겨진는 공간을 차지)과 페이드

+0

안녕하세요, @ Pauli_D, 해당 링크와 함께 답변을 게시해야합니다! 그냥 내가 뭘 찾고 있었는지! – BestAnswer

0

좋아, this link 덕분에 그 누군가가 댓글을 달았습니다. 나는 위대한 CSS를 작동 시켰습니다. 나는 거기에 밖으로 더 페이드 없지만, 단순히 지연 만약 내가 더 좋아 결정했습니다,하지만, 난 여전히 그것을 위해 CSS를 transition를 사용

#membership_container { 
    float: right; 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    height: 100%; 
    margin: 0px; 
    padding: 0px; 
    background-color: #444444; 
    text-align: center; 

} 
#login_button { 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    float: left; 
    height: 100%; 
    margin: 0px; 
    padding: 0px 10px; 
    background-color: #444444; 
    border-left: 2px solid #7B7B7B; 
    border-right: 2px solid #7B7B7B; 
    cursor: pointer; 
    cursor: hand; 
} 
#login_button:hover { 
    background-color: #696969; 
} 
#login_button:hover #login_box { 
    visibility: visible; 
    opacity: 1; 
    transition-delay: .5s; 
} 
#login_text { 
    position: relative; 
    margin: 9px 0px 0px; 
    text-align: center; 
    color: white; 
    display: inline-block; 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 13px; 
} 
#join_button { 
    position: relative; 
    vertical-align: top; 
    display: inline-block; 
    float: left; 
    height: 100%; 
    margin: 0px; 
    background-color: #444444; 
    padding: 0px 10px; 
    border-right: 2px solid #7B7B7B; 
    cursor: pointer; 
    cursor: hand; 
} 
#join_button:hover { 
    background-color: #696969; 
} 
#join_button:hover #join_box { 
    visibility: visible; 
    opacity: 1.0; 
    transition-delay: .5s; 
} 
#join_text { 
    position: relative; 
    margin: 9px 0px 0px; 
    text-align: center; 
    color: white; 
    display: inline-block; 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 13px; 
} 

.button_blur { 
    background-color: #444444; 
} 
.button_blur:hover { 
    background-color: #696969; 
} 
.button_focus { 
    background-color: #696969; 
} 
.form_containers { 
    z-index: 10; 
    position: absolute; 
    opacity: 0; 
    visibility: hidden; 
    border: 5px solid #888888; 
    border-radius: 10px 0px 10px 10px; 
    background-color: #F1F1F1; 
    -o-transition: visibility 0s linear .5s, opacity 0s linear .5s; 
    -ms-transition: visibility 0s linear .5s, opacity 0s linear .5s; 
    -moz-transition: visibility 0s linear .5s, opacity 0s linear .5s; 
    -webkit-transition: visibility 0s linear .5s, opacity 0s linear .5s; 
    transition: visibility 0s linear .5s, opacity 0s linear .5s; 
} 
#login_box { 
    top: 35px; 
    right: -2px; 
    /*left: -115px;*/ 
} 
#join_box { 
    top: 35px; 
    right: -2px; 
    /*left: -73px;*/ 
} 
.form_inner_containers { 
    position: relative; 
    margin: auto auto; 
    display: block; 
    background-color: #F1F1F1; 
    border-radius: 10px; 
    border: 0px; 
} 
.form_hidden { 
    display: none; 
} 
.form_shown { 
    display: block; 
} 
0

당신이 오버 플로우와 0 픽셀에 최대 높이를 설정 한 경우 숨겨져있는 것처럼 보이지 않는 것처럼 보이게됩니다.

그런 다음 상태가 변경되면 최대 높이를 400px와 같이 큰 크기 (영역을 포함 할 정도로 충분히 큼)로 설정합니다. 숨겨진 블록에 숨겨진 것처럼 나타납니다.

.form_before_state_change { 
max-height:0px; 
overflow:hidden; 
opacity: 0; 
-o-transition: opacity .8s linear; 
-ms-transition: opacity .8s linear; 
-moz-transition: opacity .8s linear; 
-webkit-transition: opacity .8s linear; 
transition: opacity .8s linear; 
} 

.form_after_state_change { 
    max-height:400px; 
    opacity: 1; 
} 
관련 문제