Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   На чем реализовать параллелограмм (https://javascript.ru/forum/dom-window/56986-na-chem-realizovat-parallelogramm.html)

soltx 13.07.2015 19:14

На чем реализовать параллелограмм
 
Привет, на чем реализовать параллелограмм? css отпадает, так как проблемы с кроссбраузерностью

обычное состояние

при наведении

Safort 13.07.2015 19:23

soltx,
использовать графику, другого варианта нет, если уж CSS совсем нельзя.

Deff 13.07.2015 19:29

soltx,
рони тут демонстрировал фишку "Косые края" (что-то про ленточку в браузере) с помощью широких бордеров, Думаю будет кроссбраузерно. Поищите по его сообщениям

MallSerg 13.07.2015 19:30

Цитата:

Сообщение от soltx
css отпадает, так как проблемы с кроссбраузерностью

Какой ужас у 1% пользователей будет прямоугольник вместо параллелограмма.

kostyanet 13.07.2015 19:30

Deff, рони? https://css-tricks.com/examples/ShapesOfCSS/ кивордс css shapes

soltx 13.07.2015 23:19

Цитата:

Сообщение от MallSerg (Сообщение 379208)
Какой ужас у 1% пользователей будет прямоугольник вместо параллелограмма.

вот пример: border нужно сгладить, подобные манипуляции типа backface-visibility: hidden; загубят качество изображения есть ещё подводные камни, так что это не 1%, а все 99%

soltx 13.07.2015 23:58

вот результат на css
проблемы с потерей качества изображения в chrome, opera в safari не смотрел, буду признателен если кто отпишет как там дела

если удалить свойство backface-visibility: hidden; проблема с потерей исчезнет, но появиться новая проблема: у границы будут не сглаженные края (зубчики)

может у кого получиться решить проблему в css, поделитесь кодом

Deff 14.07.2015 00:04

soltx,
Мон наложить поверх первого бордера второй с z-index:2 с полупрозрачным цветом rgba() , возможно сдвинуть на пиксел

kostyanet 14.07.2015 05:39

Цитата:

Сообщение от soltx
может у кого получиться решить проблему

Зачем саму картинку-то скукоживать? Плющат, таращат и скукоживают картинки только недобитые пролетарием колхозники.

В качестве иллюстрации функция вычисления ширины основания параллелограмма. Из скрипта для ФШ

/*
@param bounds array габариты объекта
@param radius float юзер задает радиус скругления от 0 (нет) до любого
@param angle float юзер задает угол наклона - скоса от 0 (нет) до +любого (вправо) или -любого (влево)
return side float ширина основания
*/
function calcSkew(bounds, radius, angle) {
	var R = radius,
		A = Math.PI * (Math.abs(angle)/180),
		H = bounds[3] - bounds[1]; // height,
		hyp = R / Math.cos(A),
		leg = hyp * Math.sin(A),
		side = (H * Math.tan(A) - leg + R - hyp)/2;
	return side;
}


Скрипт описывает скругленный параллелограмм внутри габаритных размеров слоя (картинки), а не скукоживает саму картинку, которая как есть просто маскируется векторной маской со всеми радиусами и наклонами и отступами.

Я к тому что если захотите автоматически рассчитывать параметры для стиля, вам эта функция пригодится. В терминах css маскирование это overflow:hidden контейнера картинки.

ЗЫ Кто алгебру читал дальше предисловия, может упростить вычисления. У меня мощности не хватило.


Часовой пояс GMT +3, время: 17:11.