#javascript #html #css
#javascript #HTML #css
Вопрос:
Я пытаюсь разработать мини-игру, в которой вы нажимаете на точку, и позиция будет генерироваться случайным образом, а размер точки будет уменьшаться по мере того, как вы нажимаете на нее. Граница также может быть масштабируемой в зависимости от ее устройства.
Любые предложения / идеи о том, как я могу масштабировать точку внутри границ, не выходя за линию?
Вот мой простой код:
.Box{
position: relative;
box-sizing: border-box;
border: 1px solid black ;
height: 700px;
width: auto;
margin: 2%;
padding: 0px;
}
.Dot{
position: absolute;
background-color:red;
border-radius: 50%;
width: 20px;
height: 50px;
left: 5px;
top: 96%;
}
<html>
<body>
<div class="Box">
<div class="Dot"></div>
</div>
</body>
</html>
Ответ №1:
Если ваша точка имеет высоту и ширину 50 пикселей, вы можете поместить отступ в половину размера вокруг основного поля, в этом случае это будет 25 пикселей отступа.
Затем вы можете добавить еще один div внутри поля, который будет составлять 100% от высоты и ширины поля, установить его положение как относительное и переместить точку внутри внутреннего контейнера.
До тех пор, пока вы сохраняете постоянный размер точки и заполняете поле половиной размера точки, точка никогда не будет выходить за пределы своих родительских контейнеров.
*, *::before, *::after {
box-sizing: border-box;
}
.Box{
border: 1px solid black;
height: 700px;
width: auto;
margin: 2%;
padding: 25px;
}
.Inner{
position: relative;
height: 100%;
width: 100%;
}
.Dot{
position: absolute;
background-color:red;
border-radius: 50%;
width: 50px;
height: 50px;
left: 5px;
top: 96%;
}
<html>
<body>
<div class="Box">
<div class="Inner">
<div class="Dot"></div>
</div>
</div>
</body>
</html>
Комментарии:
1. Спасибо. Это должно сработать. Если вы не возражаете, я спрашиваю.
*, *::before, *::after { box-sizing: border-box; }
Для чего?2.
*
означает подстановочный знак, когда вы пишете правила css внутри этого блока, они будут применены ко всем элементам html. Таким образом, вышесказанное будет применятьсяbox-sizing: border-box
ко всем элементам и ихbefore
/after
псевдоэлементам