После игры с CSS 3 у меня возникла безумная идея сделать док-станку в стиле OS X (контейнер DIV с элементами внутри него, который, используя подкласс CSS: hover, увеличивается при наведении курсора мыши). Тем не менее, я сталкиваюсь с некоторыми странными эффектами при его реализации. Пока что это то, что я пробовал:
код
<html>
<head>
<style>
body{
margin:0;
}
.dockHolder{
width:100%;
position:absolute;
text-align:center;
display:block;
bottom:0;
}
.dock{
margin-left:auto;
margin-right:auto;
bottom:0;
text-align:center;
}
.dockItem{
height:50%;
display:inline-block;
position:relative;
bottom:0;
vertical-align:bottom;
text-align:center;
transition-property:width, height;
-o-transition-property:width, height;
-moz-transition-property:width, height;
-webkit-transition-property:width, height;
transition-duration:.25s;
-o-transition-duration:.25s;
-moz-transition-duration:.25s;
-webkit-transition-duration:.25s;
transition-timing-function:linear;
-o-transition-timing-function:linear;
-moz-transition-timing-function:linear;
-webkit-transition-timing-function:linear;
}
.dockItem:hover{
height:100%;
width:auto;
}
</style>
</head>
<body>
<div class="dockHolder" style="height:64px;max-height:64px;border:1px solid black;">
<div class="dock" style="background-color:lightgray;">
<center>
<div class="dockItem" style="background-color:magenta;"><img height="100%" src="pony.png" /></div>
<div class="dockItem" style="background-color:magenta;"><img height="100%" src="bhs256.png" /></div>
</center>
</div>
</div>
</body>
</html>
Моя тестовая страница на http://s.supuhstar.operaunite.com/s/content/testAnims.htm(died с Opera Unite), если вы хотите посмотреть, что у меня есть.
Отсутствует функциональность
Неожиданные эффекты включают в себя:
- Невозможность разместить элемент
dock
внизу элемента dockHolder
dockItem
элемент не расширяется по ширине вместе со своим дочерним изображением
dockItem
и dock
не будут центрироваться внутри контейнера dockHolder
с CSS (пробовал margin:auto;
, box-pack:center;
, box-align:center;
и т. Д.); работает только тег <center>
HTML
- В Opera и Firefox (я отказался от IE),
dockItem
очень широки
Предполагаемые эффекты , которые отсутствуют:
dockItem
s остаются в элементе dock
до изменения размера, когда они увеличиваются пропорционально размеру элемента dockHolder
, но элемент dock
остается того же размера
- Элемент
dock
постоянно достаточно широкий, чтобы в нем содержались все dockItem
с, и никогда не шире, не короче, чем общая ширина всех dockItem
с и их полей.
Вопрос
У кого-нибудь есть решение, которое исправит неожиданные эффекты или реализует отсутствующие предполагаемые эффекты?
Окончательная реализация
Ниже приведен код моего окончательного решения:
<!DOCTYPE html><html>
<head>
<style type='text/css'>
body{
margin:0;
}
.dockHolder {
position: fixed;
text-align: center;
bottom: 0;
left: 0;
right: 0;
height: 128px;
line-height: 128px;
}
.dock {
background:#CCCCCC;
background:
-o-linear-gradient(top, #AAA 0, #CCC 49%, #AAA 51%, #808080 100%);
background:
-moz-linear-gradient(top, #AAA 0, #CCC 49%, #AAA 51%, #808080 100%);
background:
-webkit-linear-gradient(top, #AAA 0, #CCC 49%, #AAA 51%, #808080 100%);
border: 1px solid gray;
max-width:100%;
vertical-align: bottom;
line-height: 1em;
padding: 0 8px;
border-radius: 100%;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.dockItem {
display: inline;
height: 50%;
vertical-align: bottom;
transition-property:width, height;
-o-transition-property:width, height;
-ms-transition-property:width, height;
-moz-transition-property:width, height;
-webkit-transition-property:width, height;
transition-duration:.25s;
-o-transition-duration:.25s;
-ms-transition-duration:.25s;
-moz-transition-duration:.25s;
-webkit-transition-duration:.25s;
transition-timing-function:ease-in-out;
-o-transition-timing-function:ease-in-out;
-ms-transition-timing-function:ease-in-out;
-moz-transition-timing-function:ease-in-out;
-webkit-transition-timing-function:ease-in-out;
}
.dockItem:hover {
height: 100%;
}
.dockItem:active {
vertical-align:top;
height:95%
}
</style>
</head>
<body>
<div class="dockHolder" style="height:128px;line-height:128px;">
<span class="dock">
<img class="dockItem" src="pony.png"/>
<img class="dockItem" src="bhs256.png"/>
<img class="dockItem" src="mcgrass.png"/>
</span>
</div>
</body>
</html>
Рабочий пример (может устареть): http://admin.s.supuhstar.operaunite.com/s/content/testDock.html (умер с Opera Unite)