Язык: Javascript / jQuery / PHP
То, что я пытаюсь достичь, похоже на эффект наведения, который вы видите на пузырях этой страницы:
https://www.vizify.com/rand-fishkin
Я добился аналогичного эффекта с помощью CSS3, но переход был не таким плавным, как на этой странице, поэтому я решил использовать вместо этого Javascript.
Я делаю здесь Я увеличиваю ширину и высоту пузыря div на 10% при наведении курсора.
Но я не знаю, как настроить border-radius и margin в процентах?
$(".colored-bg").each(function() {
$.data(this, 'size', { width: $(this).width(), height: $(this).height() });
}).hover(function() {
$(this).stop().animate({ height: $.data(this,'size').height*1.1,
width: $.data(this,'size').width*1.1,
margin: '-13.5px auto' });
}, function() {
$(this).stop().animate({ height: $.data(this,'size').height,
width: $.data(this,'size').width,
margin: '-13.5px auto' });
});
При наведении:
Я хочу настроить радиус границы, чтобы пузырь оставался круглым даже при наведении курсора (1/2 числа пикселей от высоты / ширины зависшего размера div)
Я хочу изменить маржу на 1/8 отрицательных пикселей (размер зависшего div) - динамически - при наведении курсора, чтобы div оставался центрированным по вертикали (чтобы при увеличении он не просто расширялся вниз).
Хватит тявкать, вот демонстрация, отражающая то, что я сделал уже.
В настоящее время я использую фиксированный радиус границы 300 пикселей (больше, чем сам div), чтобы div округлялся даже при наведении курсора, и я изменяю поле статическим способом (не в зависимости от процента).
Поскольку я добавляю переход увеличения на основе процента, я не могу сделать статический радиус границы или статические поля для зависшего div.
У меня вопрос: как указать радиус границы и поля в процентах?
Если это то, как вы увеличиваете ширину на 10%: width: $.data(this,'size').width*1.1
Как вы устанавливаете поле на 1/8 от текущей высоты?
Я наткнулся на этот пост, который делает то, что я хочу: https://stackoverflow.com/a/3630768/ 1399030 (деление и вывод в процентах)
Большое спасибо, вся помощь очень ценится!
.stop()
? Это означает, что начальная точка каждой анимации не обязательно является конечной точкой предыдущей анимации. Вам необходимо сохранить начальные значения, например, с.data()
, и работать с этими значениями во всех случаях, т.е. если нижний предел равен x, то верхний предел равен x * 1.1. - person Beetroot-Beetroot   schedule 03.11.2012$(this).height()
, но что можно использовать для полей и радиуса границы? Спасибо за ответ! Я не знаю, как это сделать ... Я нашел 2 ссылки, которые спрашивают почти об одном и том же: stackoverflow.com/a/3630768/1399030 || stackoverflow.com/q/590602/1399030 - person Mafia   schedule 03.11.2012margin: $.data(this,'size').height*1.2
‹- в настоящее время это просто изменяет маржу на 20% больше, что не имеет никакого смысла, но то, что я пытаюсь получить, - это сделать поле -1/8 пикселей высоты div:margin: X auto
. Я понятия не имею, как сделать X динамическим с помощью jQuery. - person Mafia   schedule 03.11.2012