yii2 怎么设置css后加载

html-css010

yii2 怎么设置css后加载,第1张

namespace backend\assets

use yii\web\AssetBundle

/**

* @author chan <maclechan@qq.com>

* @since 2.0

*/

class AppAsset extends AssetBundle

{

public $basePath = '@webroot'

public $baseUrl = '@web'

//全局CSS

public $css = [

'css/animate.css',

'css/style.min.css',

]

//全局JS

public $js = [

'js/jquery-2.1.1.js'

]

//依赖关系

public $depends = [

'yii\web\YiiAsset',

'yii\bootstrap\BootstrapAsset',

]

//定义按需加载JS方法,注意加载顺序在最后

public static function addScript($view, $jsfile) {

$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' =>'api\assets\AppAsset'])

}

//定义按需加载css方法,注意加载顺序在最后

public static function addCss($view, $cssfile) {

$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' =>'api\assets\AppAsset'])

}

}

1、把js的代码放在body里面,最好是放在页面最后的位置,而不是放在head里面。这样整个页面加载结束的时候才会加载到js。

2、你可以使用js函数动态的修改页面,加载js。下面附上两个函数,可以用来加载js或者css。

/*Title : 包含其它 js 文件。

* Description : 将其它 Js 文件引入本文件中,方便管理、维护。*/

function include_js(path) {

var sobj = document.createElement('script')

sobj.type = "text/javascript"

sobj.src = path

var headobj = document.getElementsByTagName('head')[0]

headobj.appendChild(sobj)

}

/* Title : 包含其它 css 文件。

* Description : 将其它 css 文件引入本文件中,方便管理、维护。 */

function include_css(path) {

var fileref = document.createElement("link")

fileref.rel = "stylesheet"

fileref.type = "text/css"

fileref.href = path

}

3、利用ajax加载js。

项目中需要用到动态加载CSS 文件,整理了一下,顺便融合了动态加载JS 的功能写成了一个对象,先上代码:

var dynamicLoading = {

css: function(path){

if(!path || path.length === 0){

throw new Error('argument "path" is required !')

}

var head = document.getElementsByTagName('head')[0]

var link = document.createElement('link')

link.href = path

link.rel = 'stylesheet'

link.type = 'text/css'

head.appendChild(link)

},

js: function(path){

if(!path || path.length === 0){

throw new Error('argument "path" is required !')

}

var head = document.getElementsByTagName('head')[0]

var script = document.createElement('script')

script.src = path

script.type = 'text/javascript'

head.appendChild(script)

}

}

对象包含两个完全独立的方法,分别用来加载CSS 文件和JS 文件,参数均为欲加载的文件路径。原理非常的简单:对于不同的加载文件类型创建不同的节点,然后添加各自的属性,最后扔到head 标签里面。经测试,本方法兼容各浏览器,安全、无毒、环保,是 web 开发人员工作常备代码。

下面是调用代码,异常简单:

//动态加载 CSS 文件

dynamicLoading.css("test.css")

//动态加载 JS 文件

dynamicLoading.js("test.js")