CSS3 Media Query - ширина контейнера, а не экрана?
Я еще не видел, чтобы этот вопрос задавался здесь, но мне было интересно, если кто-нибудь знает, возможно ли иметь медиа-запрос, основанный на контейнере или родительском элементе, который основан на его ширине. Пользовательский случай для этого, когда у вас есть меню, которое появляется слева и уменьшает размер контейнера основных окон. Вот пример веб-сайта, где вы можете увидеть открывающиеся меню, но содержимое на странице не может измениться в зависимости от ее новой ширины.
3 ответа
Я тоже изучал это. До сих пор я был впечатлен подходом Энди Хьюма http://blog.andyhume.net/responsive-containers/ https://github.com/ahume/selector-queries/
Нет, вы не можете делать медиа-запросы таким образом, но то, что вы просите, можно сделать с помощью css. Я делал это для своего веб-сайта, и ребята на sitepoint очень помогли - см. Пост 11 здесь: http://www.sitepoint.com/forums/showthread.php?828454-CSS-Absolute-Positioning-Troubles&p=5061986&viewfull=1
Когда боковая панель открывается, она сжимает контент вправо, и его контент-центры находятся внутри. Конечно, вы можете сделать это без центрирования контента, и он будет делать то, что вы собираетесь.
Я думаю, что вы хотите что-то другое, чем то, что вы просите.
Медиа-запросы предназначены для запроса чего-то определенного для используемого вами устройства (медиа), а не для анимации или других визуальных вещей.
Восстановить пример, который вы разместили здесь, довольно просто, но он не имеет ничего общего с медиа-запросами.
Они создали нормальную страницу, имеющую два состояния. В одном состоянии виден только контент, а в другом состоянии меню видно, и контент частично (с учетом ширины меню) перемещается за пределы экрана.
Вы объявляете, какой элемент и какая опция должна быть переходной. Вот пример, где я настраиваю, что изменение ширины или поля элемента запускает анимацию, которая занимает 3 секунды:
div {
transition: width 3s, margin 3s;
-moz-transition: width 3s, margin 3s;
-webkit-transition: width 3s, margin 3s;
-o-transition: width 3s, margin 3s;
}
Переключение между этими двумя состояниями осуществляется путем добавления css-класса, и анимация, которую вы видите, настраивается с помощью параметра CSS3, называемого transition.
Я рекомендую прочитать что-то вроде https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_transitions
К вашему сведению: я перестроил что-то вроде веб-сайта, который вы показали, просто в качестве подтверждения концепции: http://jsfiddle.net/W3PF4/