, предположим, что ваша переменная всегда целочисленна, в этом случае это проще
';
echo 'var number = ' . $number . ';';
echo 'alert(number);';
echo '';
?>
output:
, предположим, что ваша переменная не является целым числом, но если вы пытаетесь выполнить выше метод, вы получите что-то вроде этого:
, но в javascript это синтаксическая ошибка.
, поэтому в php у нас есть вызов функции json_encode
, который кодирует string в json-объект.
';
echo 'var number = ' . json_encode($number) . ';';
echo 'alert(number);';
echo '';
?>
с abcd
в json это "abcd"
, поэтому он выглядит так:
Вы можете использовать тот же метод для массивов :
'supun',
'age' => 456,
'weight' => '55'
];
echo '';
?>
и ваш javascript выглядит так:
консольный выход
решение состоит в том, чтобы обернуть элемент внутри контейнера и изменить его размер, пока выполняется масштаб ()
Jsfiddle demo: http://jsfiddle.net/2KxSJ/
соответствующий код:
#wrap
{
background:yellow;
height:66px;
width:55px;
padding:10px;
float:left;
-webkit-transition:0.5s all;
-moz-transition:0.5s all;
/* more transition here */
}
#wrap:hover
{
height:300px;
width:260px;
}
.quarter
{
padding:20px;
-webkit-transform: scale(0.2);
-moz-transform: scale(0.2);
-o-transform: scale(0.2);
transform: scale(0.2);
background:red;
width:250px;
-webkit-transform-origin:left top;
-webkit-transition:0.5s all;
-moz-transition:0.5s all;
/* more transition here */
}
#wrap:hover .quarter
{
-webkit-transform: scale(0.9);
-moz-transform: scale(0.9);
-o-transform: scale(0.9);
transform: scale(0.9);
-webkit-transform-origin:left top;
-moz-transform-origin:left top;
/* more transform-origin */
}
Я столкнулся с этой проблемой, и я решил ее таким образом, я использовал SCSS, чтобы не повторять одинаковые числа по коду. Приведенный ниже код просто перемещает элемент вправо, уменьшая масштаб, чтобы переустановить его.
$originalWidth: 100px;
$rate: 0.5;
parent {
width: $originalWidth;
}
parent > div {
transform: scale(1);
}
parent:hover {
width: $originalWidth*$rate;
}
parent:hover > div {
transform: translateX(($originalWidth * ($rate - 1))/2) scale($rate); /* the order matters*/
}
Вы можете избавиться от SCSS только с использованием переменных CSS и calc()
, если хотите.
, как работает transform
:
, поэтому пустое пространство на самом деле является именно тем способом, которым элемент был визуализирован в первую очередь.
You должен использовать width
и height
в CSS, если вы хотите визуализировать размер элементов по-разному и отвечать на него окружающими элементами.
Или вы можете использовать что-то вроде javascript для изменения размеров.
Я решил это, добавив «контур: 1px solid transparent» к элементу, где применяется шкала.
#wrap:hover .quarter
{
-webkit-transform: scale(0.9);
-moz-transform: scale(0.9);
-o-transform: scale(0.9);
transform: scale(0.9);
-webkit-transform-origin:left top;
-moz-transform-origin:left top;
outline: 1px solid transparent;
}