Opera使用技巧——User CSS篇

2009-08-14 12:45:32
为什么使用Opera


        CSS是网页设计中的主要语言之一,它的全称是Cascading Style Sheets,一般翻译作层叠样式表,用来为网页添加各种样式。
        简单地说,CSS负责一个网页的外观,网页的内容是什么与HTML有关,但怎么让这些内容看上去更美观更吸引人,就应该是CSS的职责了。

        Opera里的User CSS功能,允许用户自行改变某个网页或所有网页中的某个元素的样式。在这之前,一个网页的外观是由它的设计者,那些网页设计师来决定的,现在,使用Opera的你也可以参与进去。
        通常,User CSS被用户用来过滤网页上的元素(一般是广告),或者改变网页的风格(背景和字体颜色等),也有时候它会彻底地改造整个网页的外观(这当然就复杂一些)。

        在Opera里使用现有的User CSS代码很简单,假定你现在有一个名为douban.css的文件,要用于豆瓣这个网站上,那么你只需要在豆瓣页面上右键,选择“编辑站点首选项”,再从对话窗口里选择“外观”标签,然后在最底下为它选择上边的这个CSS文件,确定即可。
在站点首选项中指定用户样式表
在站点首选项中指定用户样式表
除了让个别网站使用某个样式表之外,你也可以让所有的网站都遵循于某个样式表。从菜单上依次打开 工具>首选项 ,选择“高级”标签,选择“内容”一项,如下图:
首选项对话框
首选项对话框
接着点击对话框上样式表选项,出现如下窗口:
指定全局样式表
指定全局样式表
同样在最底下选择一个样式表文件,确定即可。 不同于编辑某个网站的站点首选项,这里选择的CSS文件将会作用于所有的网页,比如,用一个样式表让所有网页的字体为雅黑。 如果你指定了这样一个全局样式表,又为个别网站指定了首选样式表,那么对于这两个样式表中冲突的部分,首选样式表将优先于全局样式表。 比如,首选样式表中指定字体为宋体,全局样式表中指定字体为雅黑,那么对于使用了这个首选样式表的网站而言,它的字体将是宋体而不是雅黑。 你可以从这里找到一些别人编写好的CSS文件。 我自己,由于不喜欢存放着多个CSS文件(整理或备份什么的都不方便),我把所有的CSS代码都写在一个user.css文件里,把它指定为全局样式表。 由于它对所有网站都生效,因此我会把选择器尽量写得详细,以使某些代码只在某些网站生效,而不会影响到其它网站。 --------------------进阶-------------------- 在CSS里,有这样一个语句: display: none; display是一个属性,可以用来决定元素的显示模式,而none是它的其中一个值,表示不显示。 通常我们用CSS来过滤网页上的广告时,借助的就是这一行语句。 例如,假设豆瓣上的图片都是广告,由于图片包含在HTML的<img />标签里,因此我们可以通过以下这行代码来过滤掉所有这些图片: img {display: none !important;} 先不理会 !important这一部分,一个最简单的CSS语句就是上边的这种形式,可以归纳为: 选择器 {属性: 值;} 属性和值被包含在一对大括号里,而选择器,就是括号里边的语句所要作用的对象。如果你想要过滤广告,那么最重要的就是找对选择器,你可以通过右键一个网页,选择“源代码”来查看这个网页的HTML代码,进而找到你所要过滤的内容包含在哪些HTML标签里。 当然这样做会有些不方便,你可以自己找一些更方便查看网页源代码的工具,你也可以使用Opera自带的网页调试工具Dragonfly。在菜单中选择 工具>高级>开发者工具 。 现在我们回过头来看上边例子中的 !important 这部分。 如果你把上边的那行代码写为 img {display: none;} 然后应用到网站上去,你会发现网站是没有变化的,也就是你的样式表无效。 这是因为网站作者的样式优先于你的样式,而 !important 可以让这种情况相反过来,它会强制你的代码优先于作者的代码。 如果你能多少看懂HTML代码的话——即使毫无所知也应该能看懂一点,而你如果想要学会看懂一个HTML文档,可能花不了你半小时的时间,这是一种非常容易学习的标记语言——那么再看了上边的介绍后,你已经具备使用CSS过滤广告的能力了,你所需要做的就只是使用正确、合适的选择器。 而用CSS过滤广告是一种绿色而且几乎无往不利的方法。 当然,你可以可以用CSS去干别的事情,比如改变所有超链接的字体大小: a {font-size: 2em !important;} 这些就需要你自己去学习CSS语言的相关知识了,在这里我不能简单地教会你。

已停用
2009-08-14 12:49:49 已停用

在我这里,我发现在Opera下点击豆瓣上的一些rayfile链接时,会出现找不到文件的提示,而那个文件其实是存在的,至少在IE中点击进去后是有的。
解决办法:

/* 豆瓣Rayfile下载链解决 */
wbr {display: none !important;}

新建一个记事本,粘贴进上边的内容,另存为xxx.css,在豆瓣叶面上编辑站点首选项,指定这个CSS文件。
当然也可以作为全局样式表来使用。

已停用
2009-08-14 12:51:40 已停用

强制所有网页的字体为雅黑 (如果你的系统里安装有这个字体):

/* 雅黑字体 */
* {font-family: 微软雅黑 !important;}

保存为css文件,作为全局样式表使用,或者把这些代码加入你已有的全局样式表中。

已停用
2009-08-14 12:52:55 已停用

Google和百度搜索结果页面右侧的广告过滤:

/* google赞助商过滤 */
td#rhsline {display: none !important;}

/* 百度广告过滤 */
table[width="30%"] tbody div[style] {display: none !important;}

已停用
2009-08-14 12:55:53 已停用

Google搜索结果页面分栏并去除多余元素:

  /* Google */
  
  body#gsr .g {
   margin-top: 0.1em !important;
   margin-bottom: 0.4em !important;
   margin-left:0.5em !important;
   margin-right:0.1em !important;
   width:48% !important;
   min-width:48% !important;
   overflow:hidden !important;
   padding-left:0.5em !important;
   padding-bottom:0em !important;
   padding-top:0.1em !important;
   height:120px !important;
   float:left !important; }
   body#gsr .g:last-child {clear:right !important;} /* 分栏 */
  
  body#gsr #sft {margin-bottom: 5px !important;}
  body#gsr .csb {display: none !important;}
  body#gsr #nav {margin-top: 5px !important; margin-bottom: 0 !important;}
  body#gsr #nav td {padding-left: 10px !important;}
  body#gsr div.clr {display: none !important;}
  body#gsr div.e table.ts {display: none !important;} /* 多余元素去处 */
  
  body#gsr #res {padding: 0 !important; margin: 0 !important;} /* 左右边距去除 */
  
  body#gsr .s {max-width: 98% !important;} /* 框内段落加宽 */
  
  body#gsr #sft {margin-top: 0 !important;} /* 框顶部边距去除 */

已停用
2009-08-14 12:57:27 已停用

/* Rayfile整站过滤 */
#rayfile_0, #rayfile_1, #rayfile_2 {display: none !important;}
.nDown_TOPad, #nDown_level_1 #nDown_left, #nDown_level_2, .nDown_level_3 {display: none !important;}
#nD_filetitle, .TXT_note_iconlist2, #divinfo_1 div[style="float: left;"] {display: none !important;}
.nDown_ad1, #nD_fileinfo #M1-AD, .TXT_note_iconlist, .TXT_note_lightgray iframe {display: none !important;}
div[style="float:right;display:inline;line-height:24px;"] {display: none !important;}


过滤得比较彻底,基本上只留下显示下载地址的那一部分,不介意的同学可以使用。

已停用
2009-08-14 12:58:12 已停用

/* cnBeta过滤 */
#userInfo {display: none !important;}
#fm_r {display: none !important;}
#votes {display: none !important;}
p#news_foot {display: none !important;}
#feedback center img[border="0"]{display: none !important;}
#c_flash object {display: none !important;}
#contentWrapper #newsBox a img[border="0"] {display: none !important;}
center object {display: none !important;}

这些CSS事实上不只过滤了广告,还过滤掉了一些我认为没有用的东西,不介意的同学可以使用。

已停用
2009-08-14 12:59:19 已停用

另外,任何网站我都可以试着帮助你用CSS去过滤广告,有需要的同学可以找我没有关系。

Imagine
2009-08-14 14:01:21 Imagine (我们已经不可避免地走向庸俗)

这一系列的简易教程都算挺实用的

Imagine
2009-08-14 14:08:17 Imagine (我们已经不可避免地走向庸俗)

论坛里好像有个帖子是JS和CSS一起教的,等恢复了我再去看看

Aquamarine
2011-06-12 11:33:45 Aquamarine

很基础的方式,如果没有ID、Class的话就需要用到更多的选择器了。