Многослойные CSS-слои \ Непрямоугольный CSS-слой - PullRequest
5 голосов
/ 19 октября 2010

возможно ли сделать слои CSS в форме, подобной следующей ... ... 1001 *

alt text

я знаю, что у нас могут быть изображения этой формы, а с прозрачным фоном мы можем иметь слоив форме, похожей на эту ... но нет, я хочу, чтобы слои CSS располагались к фактическим границам, таким как эти фигуры ... есть ли способ CSS, jQuery или что-нибудь еще ...

Примечание: под "фигурами, подобными этим, я имею в виду нетолько эти три примера, но формы, которые я мог бы определить "

Ответы [ 4 ]

5 голосов
/ 19 октября 2010

Если вам нужны фигуры в HTML, вы должны встраивать или генерировать SVG.Возможно, вы захотите взглянуть на Raphaël .

Обычный HTML и CSS будут просто отображать прямоугольники.

3 голосов
/ 19 октября 2010

Нет прямого способа манипулировать формой элемента DOM - все элементы либо прямоугольные (если они display:block;), либо имеют форму своего текстового содержимого (если они display:inline;).

HTML DOM вращается вокруг прямоугольных блоков, поэтому вы не получите случайные формы с использованием этого.

Это зависит именно от того, что вы пытаетесь сделать. Если все, что вам нужно, это рисовать фигуры, то вам лучше использовать canvas, SVG или VML, в зависимости от того, что именно вы хотите сделать, и поддержки браузера, которая вам нужна.

Canvas - это технология HTML5, которая в основном дает вам панель рисования в браузере, которую вы можете рисовать с помощью Javascript. Позволяет создавать и анимировать 2D пиксельные рисунки.

SVG и VML являются языками векторной графики. Они выполняют примерно ту же задачу, но VML специфичен для Internet Explorer, в то время как большинство других браузеров поддерживают SVG. (IE9 также будет поддерживать SVG, но пока он не широко используется). Опять же, вы можете работать с ними, используя Javascript, и лучший способ сделать это кросс-браузерным способом - это использовать Raphael libraray , который дает вам API для создания вашей графики, а затем переводит ее в VML или SVG за кадром в зависимости от браузера.

Вы также можете, конечно, просто иметь фоновый рисунок для вашего блока в нужной форме с прозрачными областями за пределами формы и использовать только область внутри блока. Это не будет многоугольной коробкой, но если вы все сделаете правильно, она будет выглядеть так же хорошо.

Если вы действительно хотите сделать это с помощью CSS - возможно, для того, чтобы иметь поле, которое другие текстовые элементы будут плавно обтекать, вы будете бороться. Есть несколько хаков, которые вы можете использовать для достижения такого рода эффектов, но ни один из них не является именно тем, что вы ищете.

Одной из опций могут быть CSS-трансформации: это позволяет вам вращать / наклонять и т. Д. Окно. Недостатком является то, что коробка остается коробчатой ​​(то есть без многоугольников), а содержимое поворачивается и наклоняется, а также контур коробки, поэтому может не соответствовать тому, что вы пытаетесь сделать. Кроме того, он может работать не во всех браузерах, хотя в большинстве случаев его можно заставить работать.

Можно создавать прямоугольники с искусственными диагональными краями, возясь со стилями границ. См. http://www.cssplay.co.uk/menu/tree.html для хорошего примера. Но опять же, это не идеально.

Кроме того, вам просто нужно создать несколько блоков и расположить их, чтобы получить наиболее близкое соответствие к фигуре, которую вы пытаетесь достичь.

Надеюсь, это поможет.

2 голосов
/ 19 октября 2010

CSS - это язык для оформления документов, а не для придания им семантической структуры.Следовательно, не существует чего-то, известного как «слой CSS» или «форма CSS».Объектам в ваших документах HTML, включая элементы div, которые иногда ошибочно называют «слоями», могут быть заданы индексы того, отображаются ли они перед или позади других объектов, создавая иллюзию «слоев».

Нет, в HTML-документах нет объектов, которые могут иметь произвольную форму.Иногда вы можете взломать стандартные формы коробок, чтобы сделать творческие вещи, комбинируя множество малоизвестных фигур, например, сделанных с помощью хака slants .

.новый canvas element в HTML5 и другие решения векторной графики, такие как SVG, которые привели к нему.

1 голос
/ 19 октября 2010

Вы можете создать первую фигуру (в виде параллелограмма) в последних Safari, Chrome, Firefox и Opera с помощью CSS-преобразований:

Кроме этого, нет CSSвсе о прямоугольниках.

...