• 关于 html文本标签font 的搜索结果

问题

显示含有HTML标签的字符串

爵霸 2019-12-01 19:28:17 1137 浏览量 回答数 1

回答

HTML5究竟是什么? (注:目前网上介绍HTML5的文章都是千篇一律,譬如某个时间段发布某个版本,这种对于初学者或者从实用性角度来看,没有太多甚至完全不具备学习价值,只能说了解到它的出现时间,但是具体作用是什么呢?基本都是没有详细阐述,不少读者看完估计还是一头雾水的,因此笔者会用更加通俗易懂的话语,让各位能够知道HTML5究竟是什么) 首先HTML是定义了网页的结构,那么HTML5则是其不断更新的一部分。它目前有两个版本, 第一个是万维网联盟的5.2推荐标准(w3c) ,是为网页内容开发者设计的;第二个是浏览器开发者的 HTML 生活标准(HTML Living Standard) ,由微软网页超文本技术工作小组公司(WHATWG)维护。 HTML5引入了一些新的元素和属性,同时也是一个 W3C推荐标准。Web 应用程序以这些 HTML 元素为基础运行,同时包含了 HTML4和 XHTML,但是向后兼容以前的版本。另外,它与 PHP 更加兼容,新的 api 包括拖放、网络消息和网络存储、协议处理程序注册、微数据、画布、文本轨道和定时媒体播放,还有一个标准化的服务器发送事件自动更新和更好的浏览器支持,这些新的 api 为网页设计者提供了更好的控制。对于生活标准版本,新的 API 还包括地理定位、web 音频(Javascript 音频应用程序)、web RTC 和 web 加密 API。 这些元素和属性反映了现代网站的典型用法,其中包括超文本标记语言和对文档对象模型(DOM)脚本的新兴趣。HTML5语法还允许在文档内部使用 MathML,而 indexeddb将存储扩展到本地存储之外。并且从 HTML 4.01中删除了一些不推荐的元素,包括像 font 和 center 这样的纯表示元素,这些元素的效果早已被更强大的层叠样式表所取代。此外,DOM 脚本在 Web 行为中的重要性也得到了重新强调。 HTML5知识点有哪些? 经过前面的一些讲解,相信各位对HTML5已经有初步的认识,那么接下来我们将会正式探讨下,究竟有哪些知识点需要我们学习掌握的呢?(注:由于HTML5涵盖知识点较多,且本文属于入门级别的知识指南,不适宜进行全面深入地讲解,因此笔者筛选出了必须掌握的知识点,希望能够让初学者迅速入门) 知识点一:HTML5主体结构 <!doctype> 声明必须位于 HTML5 文档中首行,声明此为HTML5文档 标签限定了文档的开始点和结束点,内部包含文档头部和主体 标签用于定义文档的头部,内部的元素可以引用脚本或者样式表、提供元信息等等,并且描述了文档的各种属性和信息,包括文档的标题、在 Web 中的位置以及和其他文档的关系等,绝大多数文档头部包含的数据都不会真正作为内容显示给读者。 标签声明使用utf-8编码 标签定义文档标题 定义文档的主体,内部包含文档的所有内容,比如文本、超链接、图像、表格和列表等等,均可展示给用户浏览器显示出来(注释除外) 以上就是HTML5主体结构的讲解,可能有细心地读者就会发现,有的标签是一个的,有的又是两个对称的,那么这是何解呢? 这里就引入一个知识点,通常情况下绝大多数标签都是双标签,也就是需要写成格式,但是也有的单标签也称为自闭合标签是不需要结束符的,如 等,那么这些标签具体用法又是如何呢?下面我们将会进行常用标签的讲解! 知识点二:HTML5常用标签 众所周知,HTML5简单点说就是由一个个标签组成的文档,既然如此我们就需要学习,每一个标签究竟代表着什么含义如何使用呢?(因为标签实在太多,倘若全部阐释一遍,怕初学者们嫌弃篇幅太长感到枯燥,或者是知识点太多很难吸收掌握,因此笔者精选出一些较为常用的标签进行讲解,对于标签可能有多个属性可以选择,笔者同样会挑选出较为常用属性进行讲解) 注:以下标签,笔者没有截效果图,建议初学者自主尝试 注释标签:在我们日常编写代码时候,为了日后方便自己查看或者是别人查阅,我们通常会在某些地方写上注释标签,里面内容不会展示给浏览器用户看到 阿里云开发者社区 链接标签:超链接跳转,把需要跳转的网址写到标签的href里面,然后在开始标签和结束标签之间可以写内容展示出去,当用户点击内容将会发生跳转 换行标签:换行作用,有的小伙伴可能看到这里会说,为什么我写也是有效果的呢?这种写法不能说错误只能说是老版本的规范,按照HTML4.0规范都需要按照XHTML的写法,也就是对于单标签都是采用加斜杠的写法(下同) 按钮 按钮标签:按钮上需要展示什么文字,可在开始标签和结束标签之间写入,现阶段若写静态网站用得较少,后期学JS制作动态网站或者做交互时候比较常用 内容 块级标签:标签本身没有特殊含义,那么在其里面可以写文本内容,或者是加入其它标签均可,凡是加入其内部所有东西都会被其所包裹,形成一个独立的块级区域并且独自占用一行(css可格式化) 标题 标题标签:用于定义标题,从h1至h6均可根据自身需求选择 分隔符标签:起到装饰分隔作用,默认显示为一条黑色的水平线 图片标签:展示图片,src里面放置图片的链接,然后有时候可能出现各种原因导致图片未能加载,那么系统会自动展示alt里面的文字内容 输入框标签:默认是输入框,当然其有多个属性可以选择,然后较为常用的是type属性,该属性又有多个值可供选择,如: password 用户输入任何文本内容均会显示为小圆点 checkbox 选择框 Button按钮 列表 列表标签:通常用于展示一列数据,而且数据所采用的css样式均相同,譬如导航栏、当然还有 有序列表不过较为少用 段落 段落标签:写在内部的一段文字将会被定义为一个段落 脚本标签:现阶段不会用到,等学习到js需要用到,初学者可在标签内部写js代码,随着学习深入可以采用外部写好js文件后导入 文字 脚本标签:通常需要搭配css样式进行使用,对部分内容进行样式修改 样式标签:现阶段不会用到,等学习到css需要用到,样式需要写在标签内部 HTML5入门知识指南 经过前面的一系列学习,相信各位已经初步掌握HTML5的使用,能够制作一些简单的界面了,当然对于学习能力较强或者有一定基础的同学,可以自主深入学习HTML5深层次的知识点,当能够熟练敲出你想要的界面时候,那建议开始学习CSS让界面变得更加美丽,笔者下期将会给各位带来CSS入门知识指南,欢迎大家踊跃参与学习,当然如果有童鞋看完本文,对于某些知识点还是不太明白,或者是对下一期学习有什么建议,欢迎各位在下方评论区留言哦,如果觉得笔者文章写得不错,那么也可以分享给朋友一起学习,咱们下期再见啦!

剑曼红尘 2020-03-03 17:56:06 0 浏览量 回答数 0

回答

表达式的递归匹配 有时候,我们需要用正则表达式来分析一个计算式中的括号配对情况。比如,使用表达式 "( 1 )" 或者 "( .? )" 可以匹配一对小括号。但是如果括号 内还嵌有一层括号的话 ,如 "( ( ) )",则这种写法将不能够匹配正确,得到的结果是 "( ( )" 。类似情况的还有 HTML 中支持嵌套的标签如 " " 等。本节将要讨论的是,想办法把有嵌套的的成对括号或者成对标签匹配出来。 匹配未知层次的嵌套: 有的正则表达式引擎,专门针对这种嵌套提供了支持。并且在栈空间允许的情况下,能够支持任意未知层次的嵌套:比如 Perl,PHP,GRETA 等。在 PHP 和 GRETA 中,表达式中使用 "(?R)" 来表示嵌套部分。 匹配嵌套了未知层次的 "小括号对" 的表达式写法如下:"\( ([^()] | (?R))* \)"。 [Perl 和 PHP 的示例代码] 匹配有限层次的嵌套: 对于不支持嵌套的正则表达式引擎,只能通过一定的办法来匹配有限层次的嵌套。思路如下: 第一步,写一个不能支持嵌套的表达式:"\( [^()]* \)","<font>((?!</?font>).)*</font>"。 这两个表达式在匹配有嵌套的文本时,只匹配最内层。 第二步,写一个可匹配嵌套一层的表达式:"( (2 | ( 2 )) )"。这个表达式在匹配嵌套层数大于一时,只能匹配最里面的两层,同时,这个表达式也能匹配没有嵌套的文本或者嵌套的最里层。 匹配嵌套一层的 "" 标签,表达式为:"((?!?font>).|(((?!?font>).)))"。这个表达式在匹配 "" 嵌套层数大于一的文本时,只匹配最里面的两层。 第三步,找到匹配嵌套(n)层的表达式 与 嵌套(n-1)层的表达式之间的关系。比如,能够匹配嵌套(n)层的表达式为: [标记头] ( [匹配 [标记头] 和 [标记尾] 之外的表达式] | [匹配 n-1 层的表达式] )* [标记尾] 回头来看前面编写的“可匹配嵌套一层”的表达式:  ` ( ( 2 | ((2)) ) ) ( (?!?font>). | (((?!?font>).)) ) `             PHP 和 GRETA 的简便之处在于,匹配嵌套(n-1)层的表达式用 (?R) 表示:\( ( [^()] | (?R) )* \) 第四步,依此类推,可以编写出匹配有限(n)层的表达式。这种方式写出来的表达式,虽然看上去很长,但是这种表达式经过编译后,匹配效率仍然是很高的。 非贪婪匹配的效率 可能有不少的人和我一样,有过这样的经历:当我们要匹配类似 "<td>内容</td>" 或者 "[b]加粗[/b]" 这样的文本时,我们根据正向预搜索功能写出这样的表达式:"<td>([^<]|<(?!/td>))*</td>" 或者 "<td>((?!</td>).)*</td>"。 当发现非贪婪匹配之时,恍然大悟,同样功能的表达式可以写得如此简单:"<td>.*?</td>"。 顿时间如获至宝,凡是按边界匹配的地方,尽量使用简捷的非贪婪匹配 ".*?"。特别是对于复杂的表达式来说,采用非贪婪匹配 ".*?" 写出来的表达式的确是简练了许多。 然而,当一个表达式中,有多个非贪婪匹配时,或者多个未知匹配次数的表达式时,这个表达式将可能存在效率上的陷阱。有时候,匹配速度慢得莫名奇妙,甚至开始怀疑正则表达式是否实用。 效率陷阱的产生: 在本站基础文章里,对非贪婪匹配的描述中说到:“如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。” 具体的匹配过程是这样的: "非贪婪部分" 先匹配最少次数,然后尝试匹配 "右侧的表达式"。如果右侧的表达式匹配成功,则整个表达式匹配结束。如果右侧表达式匹配失败,则 "非贪婪部分" 将增加匹配一次,然后再尝试匹配 "右侧的表达式"。如果右侧的表达式又匹配失败,则 "非贪婪部分" 将再增加匹配一次。再尝试匹配 "右侧的表达式"。依此类推,最后得到的结果是 "非贪婪部分" 以尽可能少的匹配次数,使整个表达式匹配成功。或者最终仍然匹配失败。 当一个表达式中有多个非贪婪匹配,以表达式` "d(\w+?)d(\w+?)z" `为例,对于第一个括号中的 "\w+?" 来说,右边的 "d(\w+?)z" 属于它的 "右侧的表达式",对于第二个括号中的 "\w+?" 来说,右边的 "z" 属于它的 "右侧的表达式"。 当 "z" 匹配失败时,第二个 "\w+?" 会 "增加匹配一次",再尝试匹配 "z"。如果第二个 "\w+?" 无论怎样 "增加匹配次数",直至整篇文本结束,"z" 都不能匹配,那么表示 "d(\w+?)z" 匹配失败,也就是说第一个 "\w+?" 的 "右侧" 匹配失败。此时,第一个 "\w+?" 会增加匹配一次,然后再进行 `"d(\w+?)z"` 的匹配。循环前面所讲的过程,直至第一个 "\w+?" 无论怎么 "增加匹配次数",后边的 `"d(\w+?)z" `都不能匹配时,整个表达式才宣告匹配失败。 其实,为了使整个表达式匹配成功,贪婪匹配也会适当的“让出”已经匹配的字符。因此贪婪匹配也有类似的情况。当一个表达式中有较多的未知匹配次数的表达式时,为了让整个表达式匹配成功,各个贪婪或非贪婪的表达式都要进行尝试减少或增加匹配次数,由此容易形成一个大循环的尝试,造成了很长的匹配时间。本文之所以称之为“陷阱”,因为这种效率问题往往不易察觉。 举例:`"d(\w+?)d(\w+?)d(\w+?)z" `匹配 `"ddddddddddd..." `时,将花费较长一段时间才能判断出匹配失败 。 效率陷阱的避免: 避免效率陷阱的原则是:避免“多重循环”的“尝试匹配”。并不是说非贪婪匹配就是不好的,只是在运用非贪婪匹配的时候,需要注意避免过多“循环尝试”的问题。 情况一:对于只有一个非贪婪或者贪婪匹配的表达式来说,不存在效率陷阱。也就是说,要匹配类似 "<td> 内容 </td>" 这样的文本,表达式 "<td>([^<]|<(?!/td>))*</td>" 和 "<td>((?!</td>).)*</td>" 和 "<td>.*?</td>" 的效率是完全相同的。 情况二:如果一个表达式中有多个未知匹配次数的表达式,应防止进行不必要的尝试匹配。 比如,对表达式 `"<script language='(.*?)'>(.*?)</script>"` 来说, 如果前面部分表达式在遇到 "<script language='vbscript'>" 时匹配成功后,而后边的` "(.*?)</script>" `却匹配失败,将导致第一个 ".*?" 增加匹配次数再尝试。而对于表达式真正目的,让第一个 ".*?" 增加匹配成“vbscript'>”是不对的,因此这种尝试是不必要的尝试。 因此,对依靠边界来识别的表达式,不要让未知匹配次数的部分跨过它的边界。前面的表达式中,第一个 ".*?" 应该改写成 "[^']*"。后边那个 ".*?" 的右边再没有未知匹配次数的表达式,因此这个非贪婪匹配没有效率陷阱。于是,这个匹配脚本块的表达式,应该写成:`"<script language='([^']*)'>(.*?)</script>"` 更好。 ) ↩ () ↩

小旋风柴进 2019-12-02 02:17:14 0 浏览量 回答数 0

中小企业与商标那些事

企业品牌保护从商标开始,如何挑选一家靠谱的渠道注册商标,解读品牌权益维护的重要节点。

回答

LZ的问题: 一切皆为框div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。您可以使用 display 属性改变生成的框的类型。这意味着,通过将 display 属性设置为 block,可以让行内元素(比如 元素)表现得像块级元素一样。还可以通过把 display 设置为 none,让生成的元素根本没有框。这样的话,该框及其所有内容就不再显示,不占用文档中的空间。——《W3School:CSS 定位》块框和行内框有明确的包含关系: 块框可以包含块框行内框可以包含行内框块框可以包含行内框行内框不应该包含块框(若违法这条规则,结果很复杂,但绝对难以达成想要的效果)更多区别: block元素默认宽度自适应于外层,而inline元素宽度自适应于内部block元素默认从上往下铺排,inline元素默认从左往右铺排block元素可以设置上下margin,inline元素不可以至于float,它主要是为了满足环绕的效果,请阅读:CSS float浮动的深入研究、详解及拓展(一)、(二)。 由于LZ缺的知识点太多,这里实在是写不完。还是建议完成w3school的相关课程学习,和codecademy的CSS Positioning类目下的课程。 如果LZ有英文阅读能力,在实践后可以以这篇文章来指导知识的深化:《【译】理解 CSS 规范》 下面主要是反驳“块级元素前后会带有换行符”的误导性观点。 CSS的问题,越基础,就越容易出现误解。 “块级元素前后会带有换行符”这种说法应该是来自于实战,用类比的方式做了相应知识点的内化。读到这句话,大家也可以很轻松地联想起word之类的文本排版软件的操作:Q: 如果我有文字段A和文字段B,我想让A和B左右不交叠,折开一行,我该怎么办?A: 按回车。Q: 如果我有文字段C和图片D,我想让D不出现在C中间,从C下延排起,我该怎么办?A: 按回车。 是这样的吗?把word之类的文本排版软件的思维带到HTML里面来,下面的思维应该很常见: 在两个元素之间死命摁回车,想让两个元素上下隔得远一些 标签放在任意两个元素之间,想让两个元素上下隔得远一些。http://jsfiddle.net/humphry/3Lk2Q/点击预览 我敢相信到现在都有人是用(或者另外一个有高度的 标签)而非margin来做的垂直间隔。用Word的方式来理解HTML,用来做间隔,等到试验出来用font-size和line-height去控制的高度,以调节两个div之间的垂直距离的时候,就彻彻底底被带到沟里去了。(《你真的了解HTML吗》)“块级元素前后会带有换行符”的误导性大于它的帮助,LZ甚至已经问出了“如果是display:inline;的话那元素没有换行符就会全挤在一行上是吗?”这样的问题。 换行符不是重点,重点是盒子。 要正确理解CSS排版中的这个基础部分,得先从文档流开始。 CSS为了达到日常排版的需求,给予了文档流以现实依据:我们的书写/阅读习惯:这里就展现了从右向左,从上到到下的语言书写。因此跟这个世界的现象一致,文档流的顺序不总是从左往右从上到下,一系列属性可以改变它,不过我们这里不谈这个,我们只谈常规流。 CSS中的文档流中的两种元素,行内框的堆叠方向对应着我们的书写顺序,而块框则默认从上往下堆叠: 行内框——inline——从左往右,从上往下块框——block——从上往下换行在这个顺序中重不重要?不重要,这个过程中,重点是框往哪个方向堆叠。 更加深入的常规流介绍:《w3help:常规流( Normal flow )》 前端是一个由实践发展起的方向,相关知识点的理解大家经常用的是类比,这很正常。盒子堆叠的机制用类比,说成是换行符,对不对呢? 对也不对。说对,是因为,让盒子不左右交叠、而是上下比邻的机制跟文本排版软件里面的回车分割确实相似;说不对,是因为,如果理解到了盒子的层面,理解了块级元素和行内元素是如何按照文档流方向进行排版,理解了float元素是如何做到环绕,理解了浮动和清除浮动,就会明白,“块级元素天生自带换行符”的说法带有根深蒂固的Word排版的思想,也很有误导性。 最好的理解CSS和HTML的办法,是用CSS和HTML的方式进行思考,而不是用其他的经验来套。这就像是英语口语,有英语思维,才能流利地表达。 更新:感谢P酱,这里将容易混淆的部分修改了。“行内框不应该包含块框”是CSS相关,标签无关的,“默认是行内的元素不应该包含默认是块级的元素”跟DTD声明和浏览器有关。但总体来说,破坏这两条规则很难达成想要的效果。

a123456678 2019-12-02 02:21:19 0 浏览量 回答数 0

回答

元素浮动之后文字会环绕而不是重合原因示例解答 既然浮动元素脱离了文档流,为什么文字会环绕在浮动元素的周边而不是跟浮动元素重合呢?上网各种搜、各种问人终于找到了解决方法,感兴趣的朋友不要错过最近在学习CSS,在浮动上遇到一问题:既然浮动元素脱离了文档流,为什么文字会环绕在浮动元素的周边而不是跟浮动元素重合呢? 这问题困扰了我整整一天,上网各种搜、各种问人,也没有让我信服的答案(可能有的答案是正确的,但是我基础差,没有听懂)。最后经过一整天搜索、询问的沉淀,最后在别人的推荐下看了《CSS权威指南》,现在自认为算是基本上明白怎么回事了。以下都是我自己所想,希望可以帮到和我一样的初学者。 为了彻底明白这个问题,必须先弄明白几个问题。 :第一,浮动的目的。最初时,浮动只能用于图像(某些浏览器还支持表的浮动),目的就是为了允许其他内容(如文本)“围绕”该图像。而后来的CSS允许浮动任何元素。 第一,绝对定位与浮动的区别。 复制代码代码如下: <body> <div id="container"> <div id="A">你好</div> <div id="B"> 第一,绝对定位与浮动的区别。绝对定位是将元素彻底从文档流删除,并相对于其包含块定位(包含块可能是文档中的另一个元素或者是初始包含块),元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样,该元素再也不会影响其他元素的布局了。如果对元素A使用绝对定位的话,元素B占据元素A之前的位置,与元素A重合在一起,并被元素A覆盖。如图所示。 </div> </div> </body> 绝对定位是将元素彻底从文档流删除,并相对于其包含块定位(包含块可能是文档中的另一个元素或者是初始包含块),元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样,该元素再也不会影响其他元素的布局了。例如,对于上面的html片段,如果将元素A定位到左上角的话,元素B占据元素A之前的位置,与元素A重合在一起,并被元素A覆盖。CSS代码和效果图如下。 复制代码代码如下: body { color:#FFF; } container { position:relative; width:500px; height:250px; background:#039; } A { position:absolute; top:0; left:0; width:200px; height:200px; background:#C00; } 代码如下: 而浮动,会以某种方式将浮动元素从文档的正常流中删除,并把浮动元素向左边和右边浮动,不过它还是会影响布局,关于浮动的有许多规则,读者可自行阅读《CSS权威指南》一书,介绍地很详细。采用CSS的特有方式,浮动元素几乎“自成一派”,不过它们还是对文档的其余部分有影响。这种影响源自于这样一个事实:一个元素浮动时,其他内容会“环绕”该元素。如果将元素A向左浮动的话,CSS代码和效果图如下图所示。由此可见,浮动之后,文字跑到了元素A的右边,即实现了文字环绕浮动元素的功能(如果A不浮动的话,div是块级元素,不可能有两个div处在同一行)。 但是这儿有一小问题,如果你仔细观察CSS代码的话和效果图的话,会发现元素B的背景和元素A的背景重合了一部分。这就是用来解释为什么说浮动元素脱离了正常的文档流但是还会影响布局的原因。之所以说元素A脱离了文档流,是因为元素B确实占据了元素A之前的位置,好像元素A已经不存在了似的。只所以说会影响布局,是因为元素B里的文字并没有随之占据元素A的位置,而是环绕在浮动之后的元素A旁边。这是为了避免元素A将元素B里的文字覆盖了,这恰好就是浮动的目的! 复制代码代码如下: body { color:#FFF; } #container { width:500px; height:250px; background:#039; } #A { float:left; width:200px; height:200px; background:#C00; } #B { width:480px; height:230px; background:#000; CSS布局实例 大家感兴趣的内容1css控制UL LI 的样式详解(推荐)2HTML设置超链接字体颜色和点击后的字体颜色3div水平垂直居中的完美解决方案4CSS 漂亮搜索框美化代码5CSS 首行缩进两个文字6css 中的background:transparent到底是什么意思有什么7CSS自定义select下拉选择框的样式(不用其他标签模拟)8css textarea 高度自适应,无滚动条9css 设置全屏背景图片10CSS圆角效果 -webkit-border-radius(CSS3中border-rad 云服务器 . 最近更新的内容深入剖析z-index属性CSS中的content属性使用教程浅析CSS中calc()的使用CSS3定位和浮动详解CSS盒子模型是什么一些常被你忽略的CSS小知识【必看】CSS默认可继承样式详解知识普及之CSS: body{font-size: 62.5%;}这种写法的原知识普及:彻底搞懂CSS中单位px和em,rem的区别CSS教程之div垂直居中的多种方法.

杨冬芳 2019-12-02 02:40:29 0 浏览量 回答数 0

问题

创建定制的jQuery Mobile主题 - jQuery报错

montos 2020-06-04 14:18:42 5 浏览量 回答数 1

问题

【CSS学习全家桶】416道CSS热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:24 8458 浏览量 回答数 1

回答

前言 前两天在 echarts 上寻找灵感的时候,看到了很多有关地图类似的例子,地图定位等等,但是好像就是没有地铁线路图,就自己花了一些时间捣鼓出来了这个交互式地铁线路图的 Demo,地铁线路上的点是在网上随便下载了一个,这篇文章记录自己的一些收获(毕竟我还是个菜鸟)以及代码的实现,希望能够帮到一些朋友。当然,如果有什么意见的可以直接跟我说,大家一起交流才会进步。 效果图 地图稍微内容有点多,要全部展示,字显得有点小了,但是没关系,可以按照需求放大缩小,字体和绘制的内容并不会失真,毕竟都是用矢量绘制的~ 界面生成 底层的 div 是通过 ht.graph.GraphView 组件生成的,然后就可以利用 HT for Web 提供好的方法,调用 canvas 画笔随便绘制就好,先来看看怎么生成底层 div: var dm = new ht.DataModel();//数据容器 var gv = new ht.graph.GraphView(dm);//拓扑组件 gv.addToDOM();//将拓扑图组件添加进body中 addToDOM 函数声明如下: addToDOM = function(){ var self = this, view = self.getView(), style = view.style; document.body.appendChild(view); //将组件底层div添加到body中 style.left = '0';//默认组件是绝对定位,所以要设置位置 style.right = '0'; style.top = '0'; style.bottom = '0'; window.addEventListener('resize', function () { self.iv(); }, false); //窗口变化事件 } 现在我就可以在这个 div 上乱涂乱画了~首先我获取下载好的地铁线路图上的点,我将它们放在 subway.js 中,这个 js 文件全部都是下载的内容,我没有做其他的改动,主要是将这些点根据线路来分分配添加到数组中,比如: mark_Point13 = [];//线路 数组内包含线路的起点和终点坐标以及这条线路的名称 t_Point13 = [];//换成站点 数组内包含线路中的换乘站点坐标以及换成站点名称 n_Point13 = [];//小站点 数组内包含线路中的小站点坐标以及小站点名称 mark_Point13.push({ name: '十三号线', value: [113.4973,23.1095]}); mark_Point13.push({ name: '十三号线', value: [113.4155,23.1080]}); t_Point13.push({ name: '鱼珠', value: [113.41548,23.10547]}); n_Point13.push({ name: '裕丰围', value: [113.41548,23.10004]}); 接下来来描绘地铁线路,我声明了一个数组 lineNum,用来装 js 中所有的地铁线路的编号,以及一个 color 数组,用来装所有的地铁线的颜色,这些颜色的 index 与 lineNum 中地铁线编号的 index 是一一对应的: var lineNum = ['1', '2', '3', '30', '4', '5', '6', '7', '8', '9', '13', '14', '32', '18', '21', '22', '60', '68']; var color = ['#f1cd44', '#0060a1', '#ed9b4f', '#ed9b4f', '#007e3a', '#cb0447', '#7a1a57', '#18472c', '#008193', '#83c39e', '#8a8c29', '#82352b', '#82352b', '#09a1e0', '#8a8c29', '#82352b', '#b6d300', '#09a1e0']; 接着遍历 lineNum,将 lineNum 中的元素和颜色传到 createLine 函数中,根据这两个参数来绘制地铁线路以及配色,毕竟 js 文件中的命名方式也是有规律的,哪一条线路,则命名后面一定会加上对应的数字,所以我们只需要将字符串与这个编号结合即可获得 js 中对应的数组了: let lineName = 'Line' + num; let line = window[lineName]; createLine 的定义也非常简单,我的代码设置了不少的样式,所以看起来有点多。创建一个 ht.Polyline 管线,我们可以通过 polyline.addPoint() 函数向这个变量中添加具体的点,通过 setSegments 可以设置点的连接方式。 function createLine(num, color) {//绘制地图线 var polyline = new ht.Polyline();//多边形 管线 polyline.setTag(num);//设置节点tag标签,作为唯一标示 if(num === '68') polyline.setToolTip('A P M');//设置提示信息 else if(num === '60') polyline.setToolTip('G F'); else polyline.setToolTip('Line' + num); if(color) { polyline.s({//s 为 setStyle 的简写,设置样式 'shape.border.width': 0.4,//设置多边形的边框宽度 'shape.border.color': color,//设置多边形的边框颜色 'select.width': 0.2,//设置选中节点的边框宽度 'select.color': color//设置选中节点的边框颜色 }); } let lineName = 'Line' + num; let line = window[lineName]; for(let i = 0; i < line.length; i++) { for(let j = 0; j < line[i].coords.length; j++) { polyline.addPoint({x: line[i].coords[j][0]*300, y: -line[i].coords[j][1]*300}); if(num === '68'){//APM线(有两条,但是点是在同一个数组中的) if(i === 0 && j === 0) { polyline.setSegments([1]); } else if(i === 1 && j === 0) { polyline.getSegments().push(1); } else { polyline.getSegments().push(2); } } } } polyline.setLayer('0');//将线设置在下层,点设置在上层“top” dm.add(polyline);//将管线添加进数据容器中储存,不然这个管线属于“游离”状态,是不会显示在拓扑图上的 return polyline; } 上面代码中添加地铁线上的点有分为几种情况,是因为 js 中设置线的时候 Line68 有一个“跳跃”点的现象,所以我们必须“跳跃”过去,篇幅有限 Line68 数组具体的声明自行看 subway.js。 这里说明一点,如果用的是 addPoint 函数,不设置 segments 时,默认将添加进的点用直线连接,segments 的定义如下: 1: moveTo,占用 1 个点信息,代表一个新路径的起点 2: lineTo,占用 1 个点信息,代表从上次最后点连接到该点 3: quadraticCurveTo,占用 2 个点信息,第一个点作为曲线控制点,第二个点作为曲线结束点 4: bezierCurveTo,占用 3 个点信息,第一和第二个点作为曲线控制点,第三个点作为曲线结束点 5: closePath,不占用点信息,代表本次路径绘制结束,并闭合到路径的起始点 所以我们要做“跳跃”的行为设置 segments 为 1 即可。 最后绘制这些地铁线上的点,这个部分 subway.js 中也分离出来了,命名以“mark_Point”、“t_Point”以及“n_Point”开头,我在前面 js 的展示部分有对这些数组进行解释,大家动动中指划上去看看。 我们在这些点的位置添加 ht.Node 节点,当节点一添加进 dm 数据容器中时,就会在拓扑图上显示,当然,前提是这个拓扑图组件 gv 设置的数据容器是这个 dm。篇幅有限,添加地铁线上的点的代码部分我只展示添加“换乘站点”的点: var tName = 't_Point' + num; var tP = window[tName];//大站点 if(tP) {//有些线路没有“换乘站点” for(let i = 0; i < tP.length; i++) { let node = createNode(tP[i].name, tP[i].value, color[index]);//在获取的线路上的点的坐标位置添加节点 node.s({//设置节点的样式style 'label.scale': 0.05,//文本缩放,可以避免浏览器限制的最小字号问题 'label.font': 'bold 12px arial, sans-serif'//设置文本的font }); node.setSize(0.6, 0.6);//设置节点大小。由于js中每个点之间的偏移量太小,所以我不得不把节点设置小一些 node.setImage('images/旋转箭头.json');//设置节点的图片 node.a('alarmColor1', 'rgb(150, 150, 150)');//attr属性,可以在这里面设置任何的东西,alarmColor1是在上面设置的image的json中绑定的属性,具体参看 HT for Web 矢量手册(http://www.hightopo.com/guide/guide/core/vector/ht-vector-guide.html#ref_binding) node.a('alarmColor2', 'rgb(150, 150, 150)');//同上 node.a('tpNode', true);//这个属性设置只是为了用来区分“换乘站点”和“小站点”的,后面会用上 } }

问问小秘 2020-01-07 11:16:33 0 浏览量 回答数 0

回答

这个html编辑器不用你自己实现吧。它说白了就是个文本框。比如你输入hello,存入数据库就是hello,你把颜色变成红色,就是相当于输入了<font color=red>hello</font>你的程序不需要变动。只是存到数据库表中的内容变长了。多了些html标签而已。。######回复 @uniquesql 那么怎么讲这个设置的样式 如<font size="3" >测试〈/font>保存呢? 在哪里保存呢? 找不到啊?######你想多了。比如在JSP页面上直接取出来就行了 <%=blog.getContent()%>。。 或者EL表达式 ${blog.content} 浏览器会自动渲染这些html标记。。######回复 @追逐梦想 : 就当字符串一样读取即可,不用考虑太多######那么前台是怎么读取的呢? 这个是个值啊,怎么会反映到页面上呢?######文字内容保存的是html样式的~~~~~~~~~~~~~~######就是将这个页面中的设置样式一起保存了吧,然后就是怎么讲保存的样式反应到页面上呢?######你发的这个是。。。。 phpweb 生成的企业站 后台的吧 ######@追逐梦想 哦,呵呵。可能我猜错了######呃,好像不是啊,就是一个网站的后台,有个Html编辑器######归结到底,数据都放到database即可!修改数据库!page取得就是数据库数据!######回复 @Beyond-Bit : 谢谢!######@追逐梦想 设计复杂的,不是一般的难!你简单点,就是把你想变得东西放到数据库,比如:背景颜色你可以放到数据!要修改的时候后台读取,修改!save数据库!页面加载读取数据库即可!######嗯,这个我明白了,但是我不知道怎么讲数据放到数据库中啊。###### <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta content="IE=7.0000" http-equiv="X-UA-Compatible"> <title></title> <link rel="stylesheet" type="text/css" href="css/style(2).css"> <script type="text/javascript" src="js/base(2).js"></script> <script type="text/javascript" src="js/page.js"></script> </head> <body marginheight="0"> <s:iterator value="companyInfo" var="companyInfo"> <form id="modiPageForm" enctype="multipart/form-data" method="post" name="form" action="companyInfoAction_findCompanyInfoById?companyInfoId=<s:property value="#companyInfo.companyInfoId"/>"> <div class="formzone"> <div class="namezone">网页内容编辑</div> <div class="tablezone"> <table style="BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="2" width="100%" align="center" border="0"> <tbody> <tr> <td height="30" align="center">自定序号</td> <td height="30"><input class="input" style="WIDTH: 25px" maxlength="9" value="<s:property value="#companyInfo.companyInfoId"/>" name="companyInfo.companyInfoId"> </td> </tr> <tr> <td height="30" align="center">网页分组</td> <td height="30"><select id="groupid" name="companyInfo.webPageGroup"> <s:if test="#companyInfo.webPageGroup==1"> <option selected="true" value="1">公司简介</option> <option value="22">联系我们</option> </s:if> <s:else> <option value="1">公司简介</option> <option selected="true" value="22">联系我们</option> </s:else> </select></td> </tr> <tr> <td height="30" align="center">排版方式</td> <td height="30"><select id="modiselmodle" name="companyInfo.typeSetMethod"> <s:if test="#companyInfo.typeSetMethod==1"> <option selected="true" value="1">独立自定义排版</option> <option value="0">共享分组的排版</option> </s:if> <s:else> <option value="1">独立自定义排版</option> <option selected="true" value="0">共享分组的排版</option> </s:else> </select> </td> </tr> <tr id="tr_fold"> <td height="30" align="center">网页文件</td> <td height="30"><input id="pagefolder" class="input" maxlength="30" value="<s:property value="#companyInfo.webPageDocument"/>" name="companyInfo.webPageDocument"> .PHP</td> </tr> <tr> <td height="30" width="100" align="center">网页标题</td> <td height="30"><input id="title" class="input" maxlength="200" size="36" value="<s:property value="#companyInfo.webPageTitle"/>" name="companyInfo.webPageTitle"> <font color="#ff0000">*</font> </td> </tr> <tr> <td height="30" align="center">主题图片</td> <td height="30"><input id="jpg" class="input" size="50" type="file" name="jpg"></td> </tr> <tr> <td height="30" width="100" align="center">网页内容</td> <td height="30"><input type="hidden" value="<s:property value="#companyInfo.webPageContent"/>" name="body"> <script type="text/javascript" src="js/KindEditor.js"></script> <script type="text/javascript"> var editor = new KindEditor("editor"); editor.hiddenName = "body"; editor.editorWidth = "700px"; editor.editorHeight = "350px"; editor.skinPath = "img/"; editor.uploadPath = "../../kedit/upload_cgi/upload.php"; editor.imageAttachPath="page/pics/"; editor.iconPath = "img/"; editor.show(); function KindSubmit() { editor.data(); } </script> <div style="font-family:Courier New;"> <div style="width:700px;;border:1px solid #DDDDDD;background-color:#EFEFEF"> <table cellpadding="0" cellspacing="0" border="0" height="26"> <tbody> <tr> <td style="padding:2px;"><img id="KE_SOURCE" src="img/source.gif" alt="视图转换" title="视图转换" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_SOURCE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_PREVIEW" src="img/preview.gif" alt="预览" title="预览" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_PREVIEW');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_ZOOM" src="img/zoom.gif" alt="显示比例" title="显示比例" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_ZOOM');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_PRINT" src="img/print.gif" alt="打印" title="打印" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_PRINT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_UNDO" src="img/undo.gif" alt="回退" title="回退" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_UNDO');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_REDO" src="img/redo.gif" alt="前进" title="前进" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_REDO');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_CUT" src="img/cut.gif" alt="剪切" title="剪切" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_CUT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_COPY" src="img/copy.gif" alt="复制" title="复制" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_COPY');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_PASTE" src="img/paste.gif" alt="粘贴" title="粘贴" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_PASTE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_SELECTALL" src="img/selectall.gif" alt="全选" title="全选" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_SELECTALL');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_JUSTIFYLEFT" src="img/justifyleft.gif" alt="左对齐" title="左对齐" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_JUSTIFYLEFT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_JUSTIFYCENTER" src="img/justifycenter.gif" alt="居中" title="居中" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_JUSTIFYCENTER');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_JUSTIFYRIGHT" src="img/justifyright.gif" alt="右对齐" title="右对齐" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_JUSTIFYRIGHT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_JUSTIFYFULL" src="img/justifyfull.gif" alt="两端对齐" title="两端对齐" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_JUSTIFYFULL');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_NUMBEREDLIST" src="img/numberedlist.gif" alt="编号" title="编号" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_NUMBEREDLIST');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_UNORDERLIST" src="img/unorderedlist.gif" alt="项目符号" title="项目符号" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_UNORDERLIST');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_INDENT" src="img/indent.gif" alt="减少缩进" title="减少缩进" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_INDENT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_OUTDENT" src="img/outdent.gif" alt="增加缩进" title="增加缩进" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_OUTDENT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_SUBSCRIPT" src="img/subscript.gif" alt="下标" title="下标" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_SUBSCRIPT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_SUPERSCRIPT" src="img/superscript.gif" alt="上标" title="上标" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_SUPERSCRIPT');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_DATE" src="img/date.gif" alt="日期" title="日期" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_DATE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_TIME" src="img/time.gif" alt="时间" title="时间" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_TIME');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> </tr> </tbody> </table> <table cellpadding="0" cellspacing="0" border="0" height="26"> <tbody> <tr> <td style="padding:2px;"><img id="KE_TITLE" src="img/title.gif" alt="标题" title="标题" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_TITLE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_FONTNAME" src="img/font.gif" alt="字体" title="字体" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_FONTNAME');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_FONTSIZE" src="img/fontsize.gif" alt="文字大小" title="文字大小" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_FONTSIZE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_TEXTCOLOR" src="img/textcolor.gif" alt="文字颜色" title="文字颜色" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_TEXTCOLOR');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_BGCOLOR" src="img/bgcolor.gif" alt="文字背景" title="文字背景" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_BGCOLOR');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_BOLD" src="img/bold.gif" alt="粗体" title="粗体" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_BOLD');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_ITALIC" src="img/italic.gif" alt="斜体" title="斜体" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_ITALIC');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_UNDERLINE" src="img/underline.gif" alt="下划线" title="下划线" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_UNDERLINE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_STRIKE" src="img/strikethrough.gif" alt="删除线" title="删除线" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_STRIKE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_REMOVE" src="img/removeformat.gif" alt="删除格式" title="删除格式" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_REMOVE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_IMAGE" src="img/image.gif" alt="图片" title="图片" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_IMAGE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_FLASH" src="img/flash.gif" alt="Flash" title="Flash" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_FLASH');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_MEDIA" src="img/media.gif" alt="Windows Media Player" title="Windows Media Player" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_MEDIA');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_REAL" src="img/real.gif" alt="Real Player" title="Real Player" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_REAL');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_LAYER" src="img/layer.gif" alt="层" title="层" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_LAYER');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_TABLE" src="img/table.gif" alt="表格" title="表格" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_TABLE');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_SPECIALCHAR" src="img/specialchar.gif" alt="特殊字符" title="特殊字符" align="absmiddle" style="border: 1px solid rgb(239, 239, 239); cursor: pointer; height: 20px;" onclick="javascript:KindExecute('KE_SPECIALCHAR');" onmouseover="javascript:this.style.border='1px solid #AAAAAA';" onmouseout="javascript:this.style.border='1px solid #EFEFEF';"> </td> <td style="padding:2px;"><img id="KE_HR" src="img/hr.gif" alt="横线" title="横线" align="absmiddle" style="border:1px solid #EFEFEF;cursor:pointer;height:20px;" onclick="javascript:KindExecute('KE_HR');" onmo

kun坤 2020-06-06 23:47:11 0 浏览量 回答数 0

问题

安卓与iOS百问,开发者系统指南

yq传送门 2019-12-01 20:14:48 27317 浏览量 回答数 26
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播