Ссылка блокировки трансляции webkit
Я работал с преобразованиями и переходами для создания анимированных компонентов пользовательского интерфейса без Javascript и действительно получаю удовольствие от результатов, но я столкнулся с проблемой, которая кажется уникальной для браузеров webkit.
На элементе, который я повернул, привязка, которая охватывает 100% ширины элемента, доступна только на правой 50% элемента.
Эта проблема не существует с использованием -moz-transform в Firefox, но на 100% воспроизводима как в Chrome, так и в Safari с использованием -webkit-transform.
Вот код:
<!doctype html>
<html>
<head>
<title>webkit spincard test bed</title>
<style type="text/css">
#card-lists{
width:100%;
float:left;
}
#card-lists ul{
list-style:none;
}
#card-lists ul li{
width:230px;
height:236px;
}
.non-mobile #card-lists ul.card-list li .flipcard-container:hover .flipcard,
.non-mobile #card-lists ul.card-list li .flipcard-container.hover .flipcard{
-moz-transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
-moz-transform-style: preserve-3d;
-moz-transition: all 0s linear 0s;
-webkit-transform-style: preserve-3d;
-webkit-transition: all 0s linear 0s;
}
.non-mobile #card-lists ul.card-list li .flipcard{
-moz-transform: rotateY(0deg);
-moz-transition: all 0s linear 0s;
-webkit-transform: rotateY(0deg);
-webkit-transition: all 0s linear 0s;
width:230px;
height:236px;
}
.face {
position: absolute;
width: 100%;
height: 100%;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
.face.back {
background-color: #125672;
-moz-transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
}
.face.front {
background-color:#000;
}
</style>
</head>
<body class="non-mobile">
<div id="card-lists">
<ul class="card-list" id="cardes-list-total">
<li>
<div class="flipcard-container">
<div class="flipcard">
<div class="front face">
<a href="#">
<div style="width:100%; height:100%;">
</div>
</a>
</div>
<div class="back face">
<a href="#">
<div style="width:100%; height:100%;">
</div>
</a>
</div>
</div>
</div>
</li>
</ul>
</div>
</body>
</html>
Любая помощь, которую могли бы предложить, была бы очень признательна, поскольку я уже потратил чрезмерное количество времени на проблему.
Ответы
Ответ 1
После расчесывания через webkit Bugzilla я нашел кого-то, у кого была такая же проблема, и нашел обходной путь.
.face.back {
background-color: #125672;
-moz-transform: rotateY(180deg);
-webkit-transform: rotateY(180deg);
}
становится:
.face.back {
background-color: #125672;
-moz-transform: rotateY(180deg);
-webkit-transform: rotateY(180deg) translateZ(1px);
}
Добавление translateZ к преобразованию делает левую сторону элемента интерактивным.
Вот ссылка на ошибку: https://bugs.webkit.org/show_bug.cgi?id=54371
Ответ 2
Я использовал этот код ниже
<style>
.outer div {
float: left;
-webkit-perspective: 200px;
-webkit-transform-style: preserve-3d;
}
.outer a {
-webkit-transition: all 1.0s ease-in-out;
background:#0F6;
width:100px;
height:100px;
display:block;
-webkit-transform: rotateY(45deg);
}
.outer div:hover a {
-webkit-transform: none;
}
</style>
<div class="outer">
<div>
<a href="#" onclick="location.href='http://www.google.com/'; return false;"></a>
</div>
</div>
Это решение работает для меня в хроме. http://jsfiddle.net/jaxweb/7qtLD/7/