#javascript #html #css
#javascript #HTML #css
Вопрос:
var unitBtn = document.getElementById("dropdown-btn"); // the button which when clicked, a menu will appear
var dropDownContent = document.getElementById("dropdown-content"); // the content to be displayed when the button above is clicked
// the unitBtn is clicked
unitBtn.addEventListener("click", function() {
// if the visibility is hidden
if(dropDownContent.style.visibility == "hidden") {
dropDownContent.style.visibility = "visible";
} else { // if it is not...
dropDownContent.style.visibility = "hidden";
}
});
// the options
var kmBtn = document.getElementById("km");
var metreBtn = document.getElementById("m");
var celsiusBtn = document.getElementById("celsius");
var fahrenheitBtn = document.getElementById("fahrenheit");
kmBtn.addEventListener("click", function() {
unitBtn.value = kmBtn.value;
dropDownContent.style.visibility = "hidden";
});
metreBtn.addEventListener("click", function() {
unitBtn.value = metreBtn.value;
dropDownContent.style.visibility = "hidden";
});
celsiusBtn.addEventListener("click", function() {
unitBtn.value = celsiusBtn.value;
dropDownContent.style.visibility = "hidden";
});
fahrenheitBtn.addEventListener("click", function() {
unitBtn.value = fahrenheitBtn.value;
dropDownContent.style.visibility = "hidden";
});
// claculate button being clci
var calculateBtn = document.getElementById("calculate-btn");
calculateBtn.addEventListener("click", function() {
// hello
});
/* Background-color, title, intro (the general stuff) */
body {
background-color: rgba(100, 100, 255, 0.4);
}
#title {
text-decoration: underline;
font-family: Comic Sans, Comic Sans MS, cursive;
font-size: 35px;
}
#intro-para {
font-size: 20px;
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
/* Now for the options */
#dropdown-content {
margin-left: 169px;
}
/* in line */
#dropdown-stuff {
flex-direction: row;
display: inline;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Conversion</title>
<!-- CSS -->
<link rel="stylesheet" href="style.css">
<style>
#dropdown-content {
visibility: hidden;
}
</style>
</head>
<body>
<!-- Title and Intro -->
<h1 id="title">Conversion</h1>
<p id="intro-para">Don't know how to convert? Too lazy to pop up a calculator? Don't worry, We have you covered!</p>
<!-- Calculation buttons, inputs and options -->
<!-- Value 1 -->
<input type="text" id="value1-btn" placeholder="Value 1">
<!-- Options so that we know the unit which the user wants to convert -->
<div id="dropdown-stuff">
<input type="button" value="Select unit" id="dropdown-btn">
<div id="dropdown-content">
<input type="button" value="kilometre" id="km">
<br>
<input type="button" value="metre" id="m">
<br>
<input type="button" value="celsius" id="celsius">
<br>
<input type="button" value="fahrenheit" id="fahrenheit">
</div>
<p id="to">to</p>
<!-- Calculate button -->
<input type="button" value="Calculate" id="calculate-btn">
</div>
<!-- JavaScript -->
<script src="js.js"></script>
</body>
</html>
В приведенном выше HTML-коде в div с идентификатором «выпадающий список» я вставил элемент p <p id="to">to</p>
и кнопку — <input type="button" value="Calculate" id="calculate-btn">
. Однако они не соответствуют моему вводу и кнопке «выбрать единицу», даже если они находятся в #dropdown-stuff
Я поместил код CSS для #dropdown-stuff
, как показано ниже —
#dropdown-stuff {
flex-direction: row;
display: inline;
}
Почему мой элемент p и кнопка вычисления не соответствуют кнопке выпадающего списка и значению ввода текста 1? Как это исправить?
РЕДАКТИРОВАТЬ: я изменил значение display
flex
. Теперь они идут подряд, однако кнопки calculate (#calculate-btn) и dropdown (#dropdown-btn) представляют собой ОГРОМНЫЕ блоки, а опции (#dropdown-content), которые появляются при нажатии кнопки dropdown (#dropdown-btn), отображаются справа откнопка, а не в нижней части кнопки.
Комментарии:
1. Приветствуется
flex-direction:
работа с гибким отображением, не встроенным
Ответ №1:
flex-direction: row
будет иметь эффект только для display: flex
or display: inline-flex
.
Так что это может дать вам то, что вы ищете:
#dropdown-stuff {
flex-direction: row;
display: flex;
}
Комментарии:
1. Привет, @Eddie Reeder, теперь кнопки отображаются в виде ОГРОМНЫХ блоков, и когда я нажимаю «Выбрать единицу» (#выпадающий список-btn), параметры отображаются справа от него, а не под кнопкой
2. Они поступают в одну и ту же «строку» (спасибо за помощь), но вышеуказанная проблема сохраняется
3. Вам нужно было вложить свой выпадающий ввод и содержимое в их собственный div, содержащий div. Я исправил вашу проблему здесь . 🙂
4. Спасибо, @Eddie Reeder.