2016-02-22 7 views
0

У меня есть следующий HTML:Якорная метка не кликабельна, если не установлена ​​абсолютная позиция?

@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,400italic,500,700,900); 
 

 
/* global css */ 
 

 
body { 
 
    font-size: 16px; 
 
    font-family: 'Roboto', sans-serif; 
 
    color: #fff; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
.col-md-4 { 
 
    width: 33.33%; 
 
    float: left; 
 
} 
 
.info-boxes { 
 
    display: block; 
 
    position: relative; 
 
    background: #7accc8; 
 
    padding: 2em 0; 
 
    overflow: hidden; 
 
    text-align: center; 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 
.info-boxes h5 { 
 
    font-size: 30px; 
 
    margin: 0; 
 
    text-transform: uppercase; 
 
    font-weight: 700; 
 
} 
 
.info-boxes p { 
 
    margin: 0.5em 0; 
 
} 
 
.info-boxes h5, 
 
.info-boxes p { 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
    -webkit-transform: translateY(50%); 
 
    -ms-transform: translateY(50%); 
 
    -o-transform: translateY(50%); 
 
    transform: translateY(50%); 
 
} 
 
.info-boxes:hover h5, 
 
.info-boxes:hover p { 
 
    -webkit-transform: translateY(0); 
 
    -ms-transform: translateY(0); 
 
    -o-transform: translateY(0); 
 
    transform: translateY(0); 
 
} 
 
.info-boxes span { 
 
    display: inline-block; 
 
    font-weight: 700; 
 
    position: relative; 
 
    /* \t position: absolute; 
 
    \t bottom: 0; 
 
    \t left: 0; 
 
    \t right: 0; 
 
    */ 
 
    /*left: 50%; 
 
    \t -webkit-transform: translateX(-50%); 
 
    \t -ms-transform: translateX(-50%); 
 
    \t -o-transform: translateX(-50%); 
 
    \t transform: translateX(-50%);*/ 
 
    -webkit-transform: translateY(100px); 
 
    -ms-transform: translateY(100px); 
 
    -o-transform: translateY(100px); 
 
    transform: translateY(100px); 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 
.info-boxes:hover { 
 
    background: #f5989d; 
 
} 
 
.info-boxes:hover span { 
 
    -webkit-transform: translateY(0); 
 
    -ms-transform: translateY(0); 
 
    -o-transform: translateY(0); 
 
    transform: translateY(0); 
 
} 
 
.info-boxes span:before, 
 
.info-boxes span:after { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 50%; 
 
    right: 50%; 
 
    width: 100%; 
 
    height: 1px; 
 
    background: #fff; 
 
    /*-webkit-transform: translateY(-50%); 
 
    \t -ms-transform: translateY(-50%); 
 
    \t -o-transform: translateY(-50%); 
 
    \t transform: translateY(-50%);*/ 
 
    -webkit-transition: all .3s ease .2s; 
 
    -o-transition: all .3s ease .2s; 
 
    transition: all .3s ease .2s; 
 
    opacity: 0 
 
} 
 
.info-boxes span:after { 
 
    right: initial; 
 
    left: 50%; 
 
} 
 
.info-boxes:hover span:after, 
 
.info-boxes:focus span:after, 
 
.info-boxes:active span:after { 
 
    left: calc(100% + 10px); 
 
    opacity: 1; 
 
} 
 
.info-boxes:hover span:before, 
 
.info-boxes:focus span:before, 
 
.info-boxes:active span:before { 
 
    right: calc(100% + 10px); 
 
    opacity: 1; 
 
}
<a class="info-boxes"> 
 
    <h5>2200AED</h5> 
 
    <p>5 Private Sessions/Validity: 2 Months</p> 
 
    <span>Online Booking</span> 
 
</a>

Теперь, почему есть а не якорь больше И.Е. Я больше не могу нажимать на <a>, почему?

Теперь одно решение, которое я нашел, чтобы это было то, что изменение контейнера в div теге и внутри есть a и примените следующие стили к нему:

.info-boxes a { 
    position: absolute; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    top: 0; 
    z-index: 99; 
} 

Но это «почему» вопрос а не вопрос «Как решить этот вопрос».

Так что я хотел бы спросить, почему знак <a> не действует как один, в данном примере?

ответ

2

вам нужно добавить href иначе a не будет кликабельна

, если вы не используете href то он считается только заполнителем гиперссылка, смотрите здесь W3C

@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,400italic,500,700,900); 
 

 
/* global css */ 
 

 
body { 
 
    font-size: 16px; 
 
    font-family: 'Roboto', sans-serif; 
 
    color: #fff; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
.col-md-4 { 
 
    width: 33.33%; 
 
    float: left; 
 
} 
 
.info-boxes { 
 
    display: block; 
 
    position: relative; 
 
    background: #7accc8; 
 
    padding: 2em 0; 
 
    overflow: hidden; 
 
    text-align: center; 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 
.info-boxes h5 { 
 
    font-size: 30px; 
 
    margin: 0; 
 
    text-transform: uppercase; 
 
    font-weight: 700; 
 
} 
 
.info-boxes p { 
 
    margin: 0.5em 0; 
 
} 
 
.info-boxes h5, 
 
.info-boxes p { 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
    -webkit-transform: translateY(50%); 
 
    -ms-transform: translateY(50%); 
 
    -o-transform: translateY(50%); 
 
    transform: translateY(50%); 
 
} 
 
.info-boxes:hover h5, 
 
.info-boxes:hover p { 
 
    -webkit-transform: translateY(0); 
 
    -ms-transform: translateY(0); 
 
    -o-transform: translateY(0); 
 
    transform: translateY(0); 
 
} 
 
.info-boxes span { 
 
    display: inline-block; 
 
    font-weight: 700; 
 
    position: relative; 
 
    /* \t position: absolute; 
 
    \t bottom: 0; 
 
    \t left: 0; 
 
    \t right: 0; 
 
    */ 
 
    /*left: 50%; 
 
    \t -webkit-transform: translateX(-50%); 
 
    \t -ms-transform: translateX(-50%); 
 
    \t -o-transform: translateX(-50%); 
 
    \t transform: translateX(-50%);*/ 
 
    -webkit-transform: translateY(100px); 
 
    -ms-transform: translateY(100px); 
 
    -o-transform: translateY(100px); 
 
    transform: translateY(100px); 
 
    -webkit-transition: all .3s; 
 
    -o-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 
.info-boxes:hover { 
 
    background: #f5989d; 
 
} 
 
.info-boxes:hover span { 
 
    -webkit-transform: translateY(0); 
 
    -ms-transform: translateY(0); 
 
    -o-transform: translateY(0); 
 
    transform: translateY(0); 
 
} 
 
.info-boxes span:before, 
 
.info-boxes span:after { 
 
    content: ''; 
 
    position: absolute; 
 
    top: 50%; 
 
    right: 50%; 
 
    width: 100%; 
 
    height: 1px; 
 
    background: #fff; 
 
    /*-webkit-transform: translateY(-50%); 
 
    \t -ms-transform: translateY(-50%); 
 
    \t -o-transform: translateY(-50%); 
 
    \t transform: translateY(-50%);*/ 
 
    -webkit-transition: all .3s ease .2s; 
 
    -o-transition: all .3s ease .2s; 
 
    transition: all .3s ease .2s; 
 
    opacity: 0 
 
} 
 
.info-boxes span:after { 
 
    right: initial; 
 
    left: 50%; 
 
} 
 
.info-boxes:hover span:after, 
 
.info-boxes:focus span:after, 
 
.info-boxes:active span:after { 
 
    left: calc(100% + 10px); 
 
    opacity: 1; 
 
} 
 
.info-boxes:hover span:before, 
 
.info-boxes:focus span:before, 
 
.info-boxes:active span:before { 
 
    right: calc(100% + 10px); 
 
    opacity: 1; 
 
}
<a href="#" class="info-boxes"> 
 
    <h5>2200AED</h5> 
 
    <p>5 Private Sessions/Validity: 2 Months</p> 
 
    <span>Online Booking</span> 
 
</a>

0

Возможно, это a не имеет href. Я не знаю, находится ли это в исходном коде, но он, похоже, решает проблему.

Когда я добавляю ваш код, который, по-видимому, решает его, он не работает для меня, поэтому я думаю, что вы добавили href при изменении HTML.

1

Возможный ответ, поскольку вы не указываете, хотите ли вы перейти на другую страницу или только сделать что-то, когда clic король.

Вместо этого следует использовать тег button. Зачем? Ну, вы должны использовать привязку <a>, если она перейдет на страницу, указав href. Если он доступен для клика, он должен что-то сделать, но не переходит на другую страницу, вместо этого вы должны использовать тег button.

Смежные вопросы