css3 - Typecho 后台部分表单按钮在 Chrome 下出现灵异动画问题,求解决
阿神
阿神 2017-04-17 11:02:39
0
2
977

我给按钮添加了 compass 的 transition-duration(.4s) 的动画,用于控制按钮背景色。
但是加了以后 登录页面 和【控制台-个人设置】页面的按钮却出现了从小变大的效果,但是在【设置-(下面所有页面)】下所有的按钮都没有出现大小变化的情况

于是我又加了句 transition-property(background-color),按钮的形状没有变化了,但是出现了从无到有的渐变过程,这个就不明白了,js 全禁用了也是这样,查了半天也没查出原因。

safari 和 firefox 下都显示正常,只有在 hover 过程才出现背景色渐变的动画。
但是在 Chrome 浏览器里出现了形状变化或展示之初变化(我的版本 31.0.1650.57),不知道是什么问题,应该如何解决?

演示后台 http://typecho.org/admin/login.php

阿神
阿神

闭关修行中......

全部回覆(2)
伊谢尔伦

研究半天,終於在網上找到了一個可行的解決辦法
http://css-tricks.com/transitions-only-after-page-load/

解決步驟(在指定文件裏修改或添加代碼):

admin/header.php

<body class="preload<?php if (isset($bodyClass)) {echo ' '.$bodyClass;} ?>">

admin/css/style.css

/*可以放在 body {} 下面*/
.preload * {
  -webkit-transition: none !important;
  -moz-transition: none !important;
  -ms-transition: none !important;
  -o-transition: none !important;
}

admin/common-js.php

$(document).ready(function() {
  $("body").removeClass("preload");
});

已經發現在如下情況下會出現問題:

  1. button 處在一個 form 中,並且 form 裏至少有一個 input[type=password]
  2. 設置 button 樣式的 css 代碼是通過 link 元素外鏈進來的,若是通過 style 元素直接把 css 代碼寫到頁麵內,問題消失
  3. 如果 css 代碼前有一大段外鏈的 javascript 代碼(例如一個 jquery.js),且沒有被緩存,也有可能使問題消失

最小化的會出問題的代碼:
index.html

<!doctype html>
<link rel="stylesheet" href="index.css"/>
<form>
  <input type="password"/>
  <button>登录</button>
</form>

index.css

button {
  background-color: blue;
  -webkit-transition: background-color 0.5s;
}
button:hover {
  background-color: orange;
}

P.S. 這個應該算是 Chrome 的 bug 吧

伊谢尔伦

-- I'LL BE BACK 答错了无所谓,我还会回来的 --

我不懂compass,估計也拿不到compass的原文件,就從最終的css文件入手看了

transision有關屬性,隻打在:hover偽類上,而不是打在元素的整個類上。

https://gist.github.com/shamiao/7747795 我對style.css的修改。(有注釋的部分就是改動)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板