如果我有一个隐藏的子元素(public class Person {
String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
private List<Person> getPersonList() {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Person A"));
persons.add(new Person("Person B"));
persons.add(new Person("Person C"));
return persons;
}
Observable<List<Person>> netWorkCall = Observable.fromCallable(this::getPersonList)
.replay()
.autoConnect();
// first subscription
netWorkCall.subscribe(persons -> {
for (Person person : persons) {
System.out.println(person);
}
// output is as follows
// Person A
// Person B
// Person C
});
// second subscription, whic does some modification
netWorkCall
.flatMap(new Function<List<Person>, ObservableSource<List<Person>>>() {
@Override
public ObservableSource<List<Person>> apply(@NonNull List<Person> persons) throws Exception {
return Observable.fromCallable(() -> persons);
}
})
.subscribe(persons -> {
for (int i = 0; i < persons.size(); i++) {
Person person = persons.get(i);
person.name = "Person " + i;
System.out.println(person);
}
// output is as follows
// Person 0
// Person 1
// Person 2
});
// third subscription , again calls the replayed Observable
netWorkCall.subscribe(persons -> {
for (Person person : persons) {
System.out.println(person);
}
// Here I need output is as follows
// Person A
// Person B
// Person C
// But what I get is
// Person 0
// Person 1
// Person 2
});
或display: none
),我怎样才能让父visibility: hidden
保持高度,以便在孩子出现时看得见,父高不会改变?
我是否需要在父母身上设置一个绝对高度,或者我还可以从孩子那里计算它的身高吗?
答案 0 :(得分:3)
display:none
从流中删除元素,因此无法使父级保持高度(除了硬编码固定值)。它还应该将其隐藏在屏幕阅读器和抓取工具中。
visiblity:hidden
将元素保留在流中,因此保留为其保留的空间,因此父级将保持高度,就像元素可见一样。
opacity:0
也会像visibility:hidden
一样行动,同时允许将元素的显示转换/动画为opacity:1
。
所以你应该使用visibility:hidden
或opacity:0
,具体取决于你是否想要在跳跃的显示或过渡中显示元素。
还应该注意,visibility:hidden不会触发事件(例如点击,悬停等),而不透明度:0会。因此,甚至有一些罕见的情况可以将两者结合使用。例如,如果你想让元素开始隐藏,那么就显示一个转换,并让另一个链接到它的事件只有当元素可见时才会触发
在下面的示例中,有一个链接到div元素的click事件,只有在可见时才会触发(因此不能仅使用不透明度),但在显示时也会有一个转换(因此不能仅使用可见性)
$('button').click(function() {
$('.opacity').toggleClass("visible");
});
$('.opacity').click(function() {
alert("clicked");
});
div {
width: 100vw;
height: 100vh;
transition: opacity 1s ease;
background: chartreuse;
}
.visibility{
visibility:hidden;
}
.opacity{
visibility:hidden;
opacity:0;
}
.visible{
opacity:1;
visibility: visible;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
toggle
</button>
<div class="opacity"> opacity:0 </div>
<hr>
答案 1 :(得分:2)
如果您使用visibility: visible;
来隐藏孩子,则仍会为其保留空间。您可以通过设置visibility
。
Criteria criteria = session.createCriteria(User.class); criteria.add( Restrictions.and( Restrictions.ilike("firstName", firstName), Restrictions.ilike("lastName", lastName) ) );
CSS属性可以显示或隐藏元素而不影响文档的布局(即,为元素创建空间,无论它们是否可见)。