search
HomeWeb Front-endHTML TutorialCSST(CSS Text Transformation)_html/css_WEB-ITnose

一.CSST是什么

CSST的近义词是JSONP,而不是SASS、PostCSS之类的东西。也就是说,JSONP能做的,(CSS3环境下)用CSST也可以做到

Ajax不能跨域,而JSONP算是Ajax的跨域补丁(当然,还有其它跨域方法,但JSONP是应用最广泛的)

CSST最大的限制是 只适用于支持CSS3的环境,但我们用不用它这不重要,思路与原理比较有意思

二.实现原理

1.客户端(浏览器JS)

  1. 发送请求

    向head里插入一个

    ,通过 href

    属性发出请求

  2. 准备接收响应

    创建一个看不见的span,监听其 animationstart事件(所以需要CSS3环境)

2.服务端(node/PHP…)

  1. 返回样式(将通过id应用给隐藏span)

    样式内容分为两部分:1.content(用CSS属性 content携带业务逻辑要返回的串);2.animation(通知客户端,响应返回了)

服务端只做这一件事,客户端收到响应后,取出span的 content内容,文本传输完成

3.细节问题(技术手段)

  1. 怎么监听

    加载完毕?

    收集线上的资料,发现常见的方案是计时器或者用onpropertychange、DOMAttrModified。

    考虑是CSS3场景,取巧用动画开始(animationstart)这个事件来捕获。

    onpropertychange和 DOMAttrModified事件以及更新的MutationObserver在兼容性方面存在很多问题,而 animationstart事件兼容性相对较好(不支持Android 2.3及其以下版本,不支持IE6-IE9),因为动画事件是CSS3 动画模块规范的一部分,支持CSS3动画的UA应该都支持对应的动画事件

  2. 怎么传送特殊字符(”、’、\、\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前辈,帮我解决了一个翻译问题..)

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
HTML as a Markup Language: Its Function and PurposeHTML as a Markup Language: Its Function and PurposeApr 22, 2025 am 12:02 AM

The function of HTML is to define the structure and content of a web page, and its purpose is to provide a standardized way to display information. 1) HTML organizes various parts of the web page through tags and attributes, such as titles and paragraphs. 2) It supports the separation of content and performance and improves maintenance efficiency. 3) HTML is extensible, allowing custom tags to enhance SEO.

The Future of HTML, CSS, and JavaScript: Web Development TrendsThe Future of HTML, CSS, and JavaScript: Web Development TrendsApr 19, 2025 am 12:02 AM

The future trends of HTML are semantics and web components, the future trends of CSS are CSS-in-JS and CSSHoudini, and the future trends of JavaScript are WebAssembly and Serverless. 1. HTML semantics improve accessibility and SEO effects, and Web components improve development efficiency, but attention should be paid to browser compatibility. 2. CSS-in-JS enhances style management flexibility but may increase file size. CSSHoudini allows direct operation of CSS rendering. 3.WebAssembly optimizes browser application performance but has a steep learning curve, and Serverless simplifies development but requires optimization of cold start problems.

HTML: The Structure, CSS: The Style, JavaScript: The BehaviorHTML: The Structure, CSS: The Style, JavaScript: The BehaviorApr 18, 2025 am 12:09 AM

The roles of HTML, CSS and JavaScript in web development are: 1. HTML defines the web page structure, 2. CSS controls the web page style, and 3. JavaScript adds dynamic behavior. Together, they build the framework, aesthetics and interactivity of modern websites.

The Future of HTML: Evolution and Trends in Web DesignThe Future of HTML: Evolution and Trends in Web DesignApr 17, 2025 am 12:12 AM

The future of HTML is full of infinite possibilities. 1) New features and standards will include more semantic tags and the popularity of WebComponents. 2) The web design trend will continue to develop towards responsive and accessible design. 3) Performance optimization will improve the user experience through responsive image loading and lazy loading technologies.

HTML vs. CSS vs. JavaScript: A Comparative OverviewHTML vs. CSS vs. JavaScript: A Comparative OverviewApr 16, 2025 am 12:04 AM

The roles of HTML, CSS and JavaScript in web development are: HTML is responsible for content structure, CSS is responsible for style, and JavaScript is responsible for dynamic behavior. 1. HTML defines the web page structure and content through tags to ensure semantics. 2. CSS controls the web page style through selectors and attributes to make it beautiful and easy to read. 3. JavaScript controls web page behavior through scripts to achieve dynamic and interactive functions.

HTML: Is It a Programming Language or Something Else?HTML: Is It a Programming Language or Something Else?Apr 15, 2025 am 12:13 AM

HTMLisnotaprogramminglanguage;itisamarkuplanguage.1)HTMLstructuresandformatswebcontentusingtags.2)ItworkswithCSSforstylingandJavaScriptforinteractivity,enhancingwebdevelopment.

HTML: Building the Structure of Web PagesHTML: Building the Structure of Web PagesApr 14, 2025 am 12:14 AM

HTML is the cornerstone of building web page structure. 1. HTML defines the content structure and semantics, and uses, etc. tags. 2. Provide semantic markers, such as, etc., to improve SEO effect. 3. To realize user interaction through tags, pay attention to form verification. 4. Use advanced elements such as, combined with JavaScript to achieve dynamic effects. 5. Common errors include unclosed labels and unquoted attribute values, and verification tools are required. 6. Optimization strategies include reducing HTTP requests, compressing HTML, using semantic tags, etc.

From Text to Websites: The Power of HTMLFrom Text to Websites: The Power of HTMLApr 13, 2025 am 12:07 AM

HTML is a language used to build web pages, defining web page structure and content through tags and attributes. 1) HTML organizes document structure through tags, such as,. 2) The browser parses HTML to build the DOM and renders the web page. 3) New features of HTML5, such as, enhance multimedia functions. 4) Common errors include unclosed labels and unquoted attribute values. 5) Optimization suggestions include using semantic tags and reducing file size.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools