如何在CSS中链接到可选页面

时间:2013-09-06 作者:JASON DENNING

我有一个wordpress网站,我希望能够完全更改基于自定义CSS中浏览器大小显示的页面,这样,如果超过1500像素,它将加载一个完全不同的页面。不要问为什么会这样,CSS syling并不能满足我的需要,因为它是一个复杂的库,需要一个全新的模板和新的页面,所以现在我希望能够根据浏览器大小在这两个页面之间切换。我知道我需要使用这个代码-

@仅介质屏幕和(最小宽度:1500px){

但是我还没有找到要替换它后面的页面的代码。wordpress中的页面id是164,我想将其替换为3902。如果这是不可能的,那么如何改变CSS中的导航链接,从而根据浏览器大小将其链接到不同的页面?

谢谢

杰森

2 个回复
SO网友:Seth Alling

两个选项。

第一种方法是使用javascript确定浏览器大小。然后让你的代码做一些事情,如果浏览器的大小超过或低于一定的大小,它会更改链接。

第二种方法是使用css,这可能是您的首选方法。如果你的主题有这样写的body标签<body <?php body_class(); ?>> 然后将以下类添加到页面:page-id-164.

设置模板,使其具有两个选项,并将它们分别包装在具有唯一类或id的div中。

设置display:none; 一个是正确的css,另一个是正确的css。然后在代码中使用@media only screen and (min-width: 1500px) { 执行相反的操作。问题是您正在加载大量不必要的代码,因为人们只能看到其中一个。

如果您完全引用单独的页面,包括标题,那么我建议您使用javascript选项。下面是使用jQuery的代码,如果有主题jQuery脚本文件,您需要将其放在ready函数中。您还可能需要调整< 到a> 这取决于您希望javascript何时进行切换。

if ( $(document).width() < 1500 ) {
    $(\'.change-link > a\').each( function(){
        newlink = \'Enter New URL\';
        $(this).attr(\'href\',newlink);
    });
}
请记住,如果您将此内容放入代码中,并且$ 未定义,则需要更改$jquery.

如果要将其作为内联js放置在主题中,则应执行以下操作:

<script type="text/javascript">
jQuery(document).ready(function($) {
    if ( $(document).width() < 1500 ) {
        $(\'.change-link > a\').each( function(){
            newlink = \'Enter New URL\';
            $(this).attr(\'href\',newlink);
        });
    }
});
</script>
或者,如果希望将其作为单独的js文件调用,然后创建如下所示的文件,您可以将以下内容放入functions.php:

function my_enqueue_js(){
    wp_register_script(\'newlink\', get_template_directory_uri().\'FILE IN THEME DIRECTORY.js\');
    wp_enqueue_script(\'newlink\', array(\'jQuery\'), \'1.0\', true);
}
add_action(\'wp_enqueue_scripts\', \'sta_enqueue_js\');
然后在js文件中包含以下代码,并将该文件放在主题目录中:

jQuery(document).ready(function($) {
    if ( $(document).width() < 1500 ) {
        $(\'.change-link > a\').each( function(){
            newlink = \'Enter New URL\';
            $(this).attr(\'href\',newlink);
        });
    }
});

SO网友:Prince Singh

function my_styles() {
  // REGISTER MULTIPLE STYLESHEETS TO BE USED LATER USING wp_enqueue_style() FUNCTION

    wp_register_style(\'default-css\',get_stylesheet_directory_uri().\'/style.css\');
    wp_register_style(\'custom_css\',get_stylesheet_directory_uri().\'/css/custompage.css\');

    wp_enqueue_style( \'default-css\' ); // LOAD DEFAULT CSS FOR ALL PAGES

    if ( is_page(\'108\') ) { // 108 is page id where you want custom css
        wp_dequeue_style(\'default-css\'); // REMOVE DEFAULT STYLE
        wp_enqueue_style(\'custom-css\');  // LOAD CUSTOM STYLE
    }
}
add_action( \'wp_enqueue_scripts\', \'my_styles\' );
尝试此操作,它将加载除id为108的页面之外的所有页面的默认css

结束

相关推荐

如何保护插件显示不受主题的css影响

我正在开发一个定制的wp插件,它使用短代码在前端显示表格。但其前端显示受到主题css的影响。因此,始终遵循主题附带的表格样式。有没有可能保护它不受任何主题的css的影响,而不做任何额外的工作来挖掘插件安装在一起的主题?