Ich habe folgen Code:ein div mit Flex zu erhöhen, wenn ein anderer versteckt ist nicht auf Safari arbeiten
angular.module("myApp", []).controller("myController", function($scope) {
$scope.toggleBlue = false;
});
span {
cursor: pointer;
}
.wrapper {
display: flex;
justify-content: space-between;
padding: 10px;
background-color: grey;
margin-top: 10px;
}
.row {
width: 35%;
}
.first {
flex: 1;
background-color: red;
}
.second {
display: flex;
}
.toggle {
width: 80%;
background-color: blue;
}
.decrease {
width: 30px;
height: 20px;
background-color: yellow;
}
.noWidth {
width: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp" ng-controller="myController">
<span ng-click="toggleBlue = !toggleBlue">TOGGLE BLUE BOX</span>
<div class="wrapper">
<div class="row first"></div>
<div class="row second" ng-class="{noWidth: toggleBlue}">
<div class="toggle" ng-if="!toggleBlue"></div>
<div class="decrease"></div>
</div>
</div>
</body>
Als ich "TOGGLE BLUE BOX", auf den Text klicken Es sollte die blaue Box mit ng-if
verstecken, erhöhen Sie die rote Box, um es mit flex: 1;
zu füllen, und ändern Sie die Breite der gelben Box mit ng-class
. Also sollte es einfach die blaue Box wechseln. Dies funktioniert gut auf Chrom. Aber wenn ich es auf einem iPad in einem Safari-Browser ausprobiere, entfernt es die blaue Box, erhöht aber nicht die rote. Auch die gelbe Box ist als nicht am Ende ist es hinter dem roten wie folgen aus:
Mein erwartetes Ergebnis ist das gleiche wie hier im Snippet. Wie kann ich das auf Safari beheben? Ich versuchte es mit flex: 1 1 auto;
auf der Klasse .first
im Fall von flex 1;
, aber es hat nicht funktioniert. Irgendwelche Ideen?
Dank
Warum verwenden Sie 'Breite: 35%;' für '.row'? – 3rdthemagical
Safari-Version? –
@ 3ththagical, weil ich 35% von Grau als Breite haben möchte ... Ich denke, das ist nicht der Fehler und nicht wirklich wichtig ... – MrBuggy