Это связано с выравниванием базовой линии. Вы устанавливаете align-items: baseline
на main
-селектор. Кажется, что он корректно работает для других значений свойства align-items
.
У меня нет времени, чтобы больше узнать о базовых линиях flexbox atm, но я уверен, что более подробное объяснение можно найти здесь: https://drafts.csswg.org/css-flexbox-1/#flex-baselines
html {
font-family: sans;
font-size: 1.4em cosmetic;
}
main {
border: 4px dashed rgba(255, 0, 0, 0.4);
display: flex;
flex-wrap: wrap;
align-items: initial;
}
.collapsible {
border-top: 2px solid blue;
border-bottom: 2px solid purple;
height: 0;
width: 100%;
overflow: hidden;
}
.collapsible-inner {
background: rgba(128, 0, 128, 0.6);
}
button {
height: 220px;
}
Flex elements appears to have a »radiation« affekt going beyond a height-0-element two levels up. Investigating...
The outer container...
Some more text...
Вот пример того, что вы можете сделать. В нем я предполагаю, что вы используете геттеры и сеттеры. Вы также можете напрямую вызывать атрибуты, предполагая, что вы установили модификаторы доступа таким образом, чтобы это можно было сделать.
Все, что я сделал, - это создал новый метод incrementTimesMoved (), который перебирает ваш ArrayList и увеличивает все «перемещенные» атрибуты в его элементах, пока не доберется до объекта с заданным индексом. Это удаляет это и останавливает работу.
public class MCVE {
public static void main(String[] args) {
// IMO list isn't very descriptive, so I changed it to carList.
ArrayList<Car> carList = new ArrayList<>();
// Add a bunch of values to carList here.
for(int i = 0; i < carList.size(); i++) {
if(carList.get(i).getStatus().equals("Departing")) {
incrementTimesMoved(i, carList);
return; // stops the method
}
}
}
// only static because I am calling in the main() function
private static void incrementTimesMoved(int index, ArrayList<Car> carList) {
for(int i = 0; i < carList.size(); i++) {
if(i == index) {
carList.remove(index);
return;
}
carList.get(i).setMoved(carList.get(i).getMoved() += 1);
}
}
}