我正在尝试在元素进入视口时(即当用户滚动到视口时)应用CSS过渡效果,但不是之前.
我已经知道如何使用CSS转换,但是如何仅在元素进入视口时应用它们?
这样做最好的方法是什么?如果有一些库来简化任务,我很高兴知道.
因此,在尝试使用" Slide活动"转换但具有不同的重力时,应用程序在使用时崩溃Gravity.START,使用此:
getWindow().setExitTransition(new Slide(Gravity.START));
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
IllegalArgumentException:无效的幻灯片方向
但是如果查看源代码,那么上面的特定构造函数会调用,setSlideEdge()在这种情况下,该方法会通过switch语句来设置您之前指定的Gravity:
switch (slideEdge) {
case Gravity.LEFT:
mSlideCalculator = sCalculateLeft;
break;
case Gravity.TOP:
mSlideCalculator = sCalculateTop;
break;
case Gravity.RIGHT:
mSlideCalculator = sCalculateRight;
break;
case Gravity.BOTTOM:
mSlideCalculator = sCalculateBottom;
break;
case Gravity.START:
mSlideCalculator = sCalculateStart;
break;
case Gravity.END:
mSlideCalculator = sCalculateEnd;
break;
default:
throw new IllegalArgumentException("Invalid slide direction");
}
Run Code Online (Sandbox Code Playgroud)
Gravity.LEFT工作得很好,但因为我想要RTL支持,所以只使用它才有意义Gravity.START.我很困惑为什么在这个switch语句中执行默认情况,唯一的解释是它是一个bug.
我会向谷歌报告,但他们没有公开的方式来报告这样的API错误,在这种情况下,修复错误并不是很明显.所以,PSA给任何想要使用Gravity的Slide动画的人START.
我在两个活动之间有一个共享元素转换,它按以下方式工作:
Intent someintent = new Intent(this, someclass.class);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this
, new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage")
, new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon")
);
startActivity(someintent, options.toBundle());
}
else {
startActivity(someintent);
}
Run Code Online (Sandbox Code Playgroud)
这种方法很好,但转变的速度非常缓慢.首次点击图像时,它似乎会在转换发生之前停顿一两秒钟.这是由于正在加载的活动的"权重"还是可配置的延迟?
目的:我想在从一个页面点击到另一个页面时添加一个很好的过渡效果
我在网上尝试了很多解决方案,包括:
一个共同点是它们都有类似position: absolute或position: fixed添加的样式,这打破了我现有的应用程序布局.
在使用角1我记得,有没有必要添加position: absolute到<div ui-view><div>
Angular 2还是4?
嗨,我试图在没有故事板的情况下以编程方式执行segue.目前我将此作为我的代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popOutNoteExpanded" {
let vc = segue.destination as! ExpandedCellViewController
let cell = sender as! AnnotatedPhotoCell
sourceCell = cell
vc.picture = cell.imageView.image
print("button pressed")
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
performSegue(withIdentifier: "popOutNoteExpanded", sender: indexPath)
}
Run Code Online (Sandbox Code Playgroud)
当我点击集合视图单元格时,它会说:
没有标识符'popOutNoteExpanded'的segue.
不确定如何执行我的自定义动画过渡.
我试图让我的视图使用.transition()on 视图进行动画/过渡。我从这里使用类似的代码并放入.transition()两个条件视图。
struct Base: View {
@State private var isSignedIn = false
var body: some View {
Group {
if(isSignedIn){
Home().transition(.slide)
}else{
AuthSignin(isSignedIn: self.$isSignedIn).transition(.slide)
}
}
}
}
struct AuthSignin: View {
@Binding var isSignedIn: Bool
var body: some View {
VStack {
Button(action: {
self.isSignedIn = true
}) {
Text("Sign In")
.bold()
.frame(minWidth: CGFloat(0), maxWidth: .infinity)
.padding()
.background(Color.blue)
.foregroundColor(Color.white)
.cornerRadius(CGFloat(10))
}.padding()
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我单击“登录”按钮(有或没有.transition())时,应用程序都会冻结一秒钟,然后Home()视图会突然出现而没有任何动画/过渡。我也试过换行self.isSignedIn = true, …
正如go_router 的文档所描述的,为单个页面设置pageBuilder-Transitions 很容易。但是,我想为所有页面设置默认的 PageTransition。
如何在 Flutter 中使用 go_router 设置默认页面转换?
单页:
// this is the proposed method to do it for single pages
// how can i apply it to all pages without writing the same code?
GoRoute(
path: '/login',
builder: (context, state) => const LoginScreen(),
pageBuilder: (context, state) => CustomTransitionPage<void>(
key: state.pageKey,
child: const LoginScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) =>
FadeTransition(opacity: animation, child: child),
),
),
Run Code Online (Sandbox Code Playgroud)
此致
我已经在网站上看到过这种类型的动画,就在CSS3关键帧开始获得动力的时候,但是找不到它,我也不能用CSS或jQuery复制它,而这里我认为你们中的一些人可以提供帮助.
我已经设想了我希望实现的内容,并将其嵌入到下面.我相信这可以使用新的CSS3关键帧或jQuery的.animate()进行编码; 特征.我不知道.我已经尝试过我所知道的一切,但都是徒劳的.
这是我想要的GIF动画:

我刚刚注意到,http://droplr.com/在他们的主页上使用了一个非常类似的过渡,但有一些滑动效果.并且出现的数据(单词)都是随机的.我想知道这是怎么可能的!
我正在使用JavaScript切换通知,如下所示.如何在display: block和之间添加转换display: none;
我不想添加像jQuery这样的外部库,因为我只会toggle单独使用该效果.
var btn = document.querySelector('button');
btn.addEventListener('click', function(){
var hint = document.getElementById('hint');
if(hint.style.display == 'none'){
hint.style.display = 'block';
}
else{
hint.style.display = 'none';
}
});Run Code Online (Sandbox Code Playgroud)
div#hint{
background: gold;
color: orangered;
padding: .5em;
font-weight: bold;
}Run Code Online (Sandbox Code Playgroud)
<div id='hint'>
<p>This is some hint on how to be safe in this community </p>
<p>This is another hint on how to be safe in this community </p>
</div>
<button> show hint </button>Run Code Online (Sandbox Code Playgroud)
我知道我可以使用jQuery来实现这一点,如下所示.
$(document).ready(function(){
$('button').click(function(){
$('#hint').toggle('slow');
}); …Run Code Online (Sandbox Code Playgroud)我的转换看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/divider"/>
<item android:drawable="@drawable/divider_active"/>
</transition>
Run Code Online (Sandbox Code Playgroud)
和代码看起来像这样:
View divider = v.findViewById(R.id.divider);
if (divider != null) {
TransitionDrawable transition = (TransitionDrawable) divider.getBackground();
transition.startTransition(2000);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不知道如何永远重复这种转变,所以我可以创造一个脉冲效果.
编辑:
为了清楚起见:在创建视图(listitem)时执行代码,因此循环不是解决方案.