Быстрое и грязное (особенно грязное ) решение для обоих ваших вопросов выглядит следующим образом:
1) поместите «оповещения» в отдельном div
ниже button
s чтобы выровнять их
2) добавить onblur = "document.getElementById('alertxxxxxx').style.display='none'"
к вам button
элементов.
.alert {
display: none;
padding: 20px;
background-color: #f44336;
color: white;
}
.closebtn {
margin-left: 15px;
color: white;
font-weight: bold;
float: right;
font-size: 22px;
line-height: 20px;
cursor: pointer;
transition: 0.3s;
}
<button onclick="document.getElementById('alert1').style.display='block'" onblur="document.getElementById('alert1').style.display='none'">Button1</button>
<button onclick="document.getElementById('alert2').style.display='block'" onblur="document.getElementById('alert2').style.display='none'">Button2</button>
<button onclick="document.getElementById('alert3').style.display='block'" onblur="document.getElementById('alert3').style.display='none'">Button3</button>
<button onclick="document.getElementById('alert4').style.display='block'" onblur="document.getElementById('alert4').style.display='none'">Button4</button>
<div>
<div id="alert1" class="alert"> <span class="closebtn" onclick="this.parentElement.style.display='none';">×</span>Message 1 </div>
<div id="alert2" class="alert"> <span class="closebtn" onclick="this.parentElement.style.display='none';">×</span>Message 2 </div>
<div id="alert3" class="alert"> <span class="closebtn" onclick="this.parentElement.style.display='none';">×</span>Message 3 </div>
<div id="alert4" class="alert"> <span class="closebtn" onclick="this.parentElement.style.display='none';">×</span>Message 4 </div>
</div>