一.CSST是什么
CSST的近义词是JSONP,而不是SASS、PostCSS之类的东西。也就是说,JSONP能做的,(CSS3环境下)用CSST也可以做到
Ajax不能跨域,而JSONP算是Ajax的跨域补丁(当然,还有其它跨域方法,但JSONP是应用最广泛的)
CSST最大的限制是 只适用于支持CSS3的环境,但我们用不用它这不重要,思路与原理比较有意思
二.实现原理
1.客户端(浏览器JS)
-
发送请求
向head里插入一个
,通过 href属性发出请求
-
准备接收响应
创建一个看不见的span,监听其 animationstart事件(所以需要CSS3环境)
2.服务端(node/PHP…)
-
返回样式(将通过id应用给隐藏span)
样式内容分为两部分:1.content(用CSS属性 content携带业务逻辑要返回的串);2.animation(通知客户端,响应返回了)
服务端只做这一件事,客户端收到响应后,取出span的 content内容,文本传输完成
3.细节问题(技术手段)
-
怎么监听
加载完毕?
收集线上的资料,发现常见的方案是计时器或者用onpropertychange、DOMAttrModified。
考虑是CSS3场景,取巧用动画开始(animationstart)这个事件来捕获。
onpropertychange和 DOMAttrModified事件以及更新的MutationObserver在兼容性方面存在很多问题,而 animationstart事件兼容性相对较好(不支持Android 2.3及其以下版本,不支持IE6-IE9),因为动画事件是CSS3 动画模块规范的一部分,支持CSS3动画的UA应该都支持对应的动画事件
-
怎么传送特殊字符(”、’、\、\n、\r、\t)?
Chrome、Safari 对 content 样式属性字符解析并不一致
为避免未知解析规则影响,统一使用base64编码
浏览器环境下编码/解码Base64相对容易,也适用于其它需要支持特殊字符的场景
三.优缺点
优点:如果接口被攻陷的话,后果比JSONP小一点(link标签比script标签安全些,后者注入代码能直接执行,前者只影响样式)
P.S.如果接口都被攻陷了,这样一点防御措施兴许还能起到什么关键性作用吗?
缺点:
-
只支持CSS3环境
-
DOM操作多于JSONP(每次请求需要增加/删除一个link一个span,JSONP每次只需要增加/删除一个script,而且隐藏span的增加/删除以及样式更新可能会导致页面部分reflow)
所以, 不推荐使用CSST,JSONP明显更方便实用,本文只是想说这种思路与原理值得了解
如果非要用的话,也应该考虑一下不支持/部分支持CSS3的UA的感受,需要完善特征检测( 原项目暂时没有添上):
var animation = false, animationstring = 'animation', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elm = document.createElement('div');if( elm.style.animationName !== undefined ) { animation = true; } if( animation === false ) { for( var i = 0; i < domPrefixes.length; i++ ) { if( elm.style[ domPrefixes[i] + 'AnimationName' ] !== undefined ) { pfx = domPrefixes[ i ]; animationstring = pfx + 'Animation'; keyframeprefix = '-' + pfx.toLowerCase() + '-'; animation = true; break; } }}
(以上代码摘自 Detecting CSS animation support – CSS | MDN)
更好的兼容性需要手动重构代码,算了,了解下就好
参考资料
-
GitHub – zswang/csst: CSS Text Transformation
-
mobilebone.js-mobile移动web APP单页切换骨架:参考animationstart事件的兼容性(这周还得感谢zxx前辈,帮我解决了一个翻译问题..)

HTMLtagsdefinethestructureofawebpage,whileattributesaddfunctionalityanddetails.1)Tagslike,,andoutlinethecontent'splacement.2)Attributessuchassrc,class,andstyleenhancetagsbyspecifyingimagesources,styling,andmore,improvingfunctionalityandappearance.

The future of HTML will develop in a more semantic, functional and modular direction. 1) Semanticization will make the tag describe the content more clearly, improving SEO and barrier-free access. 2) Functionalization will introduce new elements and attributes to meet user needs. 3) Modularity will support component development and improve code reusability.

HTMLattributesarecrucialinwebdevelopmentforcontrollingbehavior,appearance,andfunctionality.Theyenhanceinteractivity,accessibility,andSEO.Forexample,thesrcattributeintagsimpactsSEO,whileonclickintagsaddsinteractivity.Touseattributeseffectively:1)Usese

The alt attribute is an important part of the tag in HTML and is used to provide alternative text for images. 1. When the image cannot be loaded, the text in the alt attribute will be displayed to improve the user experience. 2. Screen readers use the alt attribute to help visually impaired users understand the content of the picture. 3. Search engines index text in the alt attribute to improve the SEO ranking of web pages.

The roles of HTML, CSS and JavaScript in web development are: 1. HTML is used to build web page structure; 2. CSS is used to beautify the appearance of web pages; 3. JavaScript is used to achieve dynamic interaction. Through tags, styles and scripts, these three together build the core functions of modern web pages.

Setting the lang attributes of a tag is a key step in optimizing web accessibility and SEO. 1) Set the lang attribute in the tag, such as. 2) In multilingual content, set lang attributes for different language parts, such as. 3) Use language codes that comply with ISO639-1 standards, such as "en", "fr", "zh", etc. Correctly setting the lang attribute can improve the accessibility of web pages and search engine rankings.

HTMLattributesareessentialforenhancingwebelements'functionalityandappearance.Theyaddinformationtodefinebehavior,appearance,andinteraction,makingwebsitesinteractive,responsive,andvisuallyappealing.Attributeslikesrc,href,class,type,anddisabledtransform

TocreatealistinHTML,useforunorderedlistsandfororderedlists:1)Forunorderedlists,wrapitemsinanduseforeachitem,renderingasabulletedlist.2)Fororderedlists,useandfornumberedlists,customizablewiththetypeattributefordifferentnumberingstyles.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Notepad++7.3.1
Easy-to-use and free code editor
