Хорошо, я наконец-то понял, как сделать это с градиентами. Я тестировал это только в Firefox 4, где он прекрасно работает, но также должен работать и в 3.6:
html {
background: -moz-linear-gradient(top, green 50px, transparent 50px),
-moz-linear-gradient(bottom, green 50px, white 50px);
}
Вот демонстрационная программа, воссоздающая исходный макет (убедитесь, что вы просматриваете его в Firefox).
1) нам нужно иметь 2 градиента для создания эффекта, один для верхнего колонтитула и один для нижнего колонтитула.
2) Значение пиксела, присваиваемое каждому цвету градиента, указывает, где градиент должен начинаться ИЛИ останавливаться. Это означает, что первое свойство градиента должно читаться как «Начните зеленый цвет с верха элемента html до 50 пикселей. Затем начните прозрачный цвет с 50 пикселей до конца».
3) Несколько фонов наслоены в том порядке, в котором они объявлены. Это означает, что градиент заголовка будет длиной элемента html и появится поверх градиента нижнего колонтитула. Это может скрыть градиент нижнего колонтитула, поэтому необходимо, чтобы второе значение цвета первого градиента было прозрачным. Если вам нравится, вы можете установить второе значение цвета второго градиента на то, что вы хотите, и он даст вам цвет фона. Кроме того, вы можете просто установить прозрачность, а затем установить цвет фона после 2-го градиента. Может потребоваться некоторая потеря производительности для рендеринга прозрачности, хотя это может быть оптимизировано в этом конкретном случае использования.
4) Если вам нужен липкий нижний колонтитул, убедитесь, что элемент html имеет min-height:100%
.
Чтобы не дать вам сходить с ума, вы также можете использовать этот миксин с sass, который должен работать в сборках Firefox 3.6, Opera / Chrome / Safari Nightly и, что, вероятно, станет стандартным синтаксисом.
@mixin stripe($height, $color) {
background-image: -moz-linear-gradient(top, $color $height, transparent $height), -moz-linear-gradient(bottom, $color $height, transparent $height);
background-image: -o-linear-gradient(top, $color $height, transparent $height), -o-linear-gradient(bottom, $color $height, transparent $height);
background-image: -webkit-linear-gradient(top, $color $height, transparent $height), -webkit-linear-gradient(bottom, $color $height, transparent $height);
background-image: linear-gradient(top, $color $height, transparent $height), linear-gradient(bottom, $color $height, transparent $height);
}
//Example usage
html { @include stripe(50px, green); }