CSS数学函数和容器查询实现不定宽文本溢出的跑马灯效果
时间:2023-04-05 15:00:22
HTML5
寰堜箙浠ュ墠鍐欒繃杩欐牱涓€绡囨枃绔犫€斺€斾笉瀹氬婧㈠嚭鏂囨湰鑷€傚簲婊氬姩銆傛垜浠疄鐜颁簡杩欐牱涓€涓晥鏋滐細鏂囨湰鍐呭涓嶈秴杩囧鍣ㄧ殑瀹藉害锛屾甯告樉绀烘枃鏈唴瀹硅秴鍑哄鍣紝鍐呭鍙互杩欐牱鏉ュ洖婊氬姩锛氫絾鏄紝涔嬪墠鐨勮В鍐虫柟妗堟湁涓€涓槑鏄剧殑缂虹偣锛屽鏋滄垜浠鍏堢煡閬撳鍣ㄧ殑瀹藉害锛岄偅涔堟病鏈夐棶棰橈紝浣嗘槸濡傛灉瀹瑰櫒鐨勫搴︿笉鑳界‘瀹氾紝涔熷氨鏄枃瀛楃殑瀹藉害涓嶇‘瀹氾紝閭d箞瀹瑰櫒鐨勫搴︿篃鏄笉纭畾锛岄偅涔堟暣涓晥鏋滃氨浼氭湁鐐圭憰鐤点€傜己闄锋槸褰撴椂鐨凜SS鎶€鏈棤娉曞垽鏂綋鍓嶆枃鏈唴瀹圭殑闀垮害鏄惁瓒呰繃鍏跺鍣ㄧ殑瀹藉害锛屾墍浠ュ嵆浣挎枃鏈笉鏄お闀匡紝Hover涔熶細鏉ュ洖婊氬姩锛屽儚杩欐牱锛歝ontainerquerycqw鍜孋SS鏁板鍑芥暟max鐨勮儗鏅弿杩板ぇ鑷存槸杩欐牱鐨勩€傛劅鍏磋叮鐨勫悓瀛﹀彲浠ョ畝鍗曠湅涓€涓嬩笂鍗堟彁鍒扮殑閭g瘒鏂囩珷鈥斺€斿彲鍙樺搴︽孩鍑烘枃瀛楃殑鑷€傚簲婊氬姩銆備粖澶╋紝鎴戜滑閲嶆柊瀹¤杩欎釜闂銆傜湅鐪嬫垜浠粖澶╁浣曟洿绠€鍗曟柟渚垮湴瑙e喅杩欎釜闂锛侀鍏堟垜浠殑闂鍏跺疄鍙互鎶借薄涓猴細鍒ゆ柇鏂囧瓧瀹藉害鍜屽鍣ㄥ搴︾殑宸€硷紝鏂囧瓧瀹藉害鏄惁澶т簬瀹瑰櫒瀹藉害锛屽鏋滆秴杩囧垯璁剧疆鍓嶅悗浣嶇Щ鍔ㄧ敾锛屼綅绉昏寖鍥存槸瀹瑰櫒瀹藉害鍜屾枃鏈搴︿箣闂寸殑宸紓銆傜劧鍚庯紝鎴戜滑涓€姝ヤ竴姝ユ潵銆傚亣璁炬垜浠殑HTML缁撴瀯濡備笅锛?divclass="marquee">Loremipsumdolorsitametelit銆侫nimi,liquid.
鍏朵腑div鏄鍣紝span鏄枃鏈唴瀹广€傚悓鏃舵垜浠娇鐢ㄥ鍣ㄦ煡璇㈠皢鐖跺鍣ㄨ窇椹伅璁剧疆涓哄鍣ㄦ煡璇㈢殑瀹瑰櫒锛屼細浠ュ鍣ㄧ殑inline-size缁村害涓哄噯銆?marquee{绌虹櫧锛歯owrap;container-type:inline-size;}缁х画锛屾垜浠浣曠煡閬撳湪鏇村ぇ鐨剆pan涓紝褰撳墠span鐨勫唴瀹归暱搴︽垨鐖跺鍣ㄧ殑瀹藉害锛熶互鍓嶅緢闅惧仛鍒帮紝鐜板湪鎴戜滑鏈変簡瀹瑰櫒鏌ヨ涔嬪悗锛屽鍣ㄦ煡璇㈠崟鍏僣qw灏卞彲浠ュ仛鍒般€備竴銆佷粈涔堟槸瀹瑰櫒鏌ヨ锛熷鍣ㄦ煡璇娇CSS鑳藉鏍规嵁瀹瑰櫒鐨勫搴﹁皟鏁村竷灞€锛岃€屾棤闇€鏀瑰彉娴忚鍣ㄨ鍙g殑瀹藉害銆傚鏋滄兂浜嗚В鏇村瀹瑰櫒鏌ヨ锛屽彲浠ョ偣鍑伙細鏂版椂浠e竷灞€鏂扮壒鎬р€斺€斿鍣ㄦ煡璇㈠鍣ㄦ煡璇㈠甫鏉ヤ簡寰堝鏂扮殑鍗曚綅锛屽寘鎷細cqw瀹瑰櫒鏌ヨ瀹藉害锛圕ontainerQueryWidth锛夋瘮銆?cqw绛変簬瀹瑰櫒瀹藉害鐨?%銆傚亣璁惧鍣ㄥ搴︿负1000px锛屾鏃?cqw瀵瑰簲鐨勮绠楀€间负10px銆俢qh瀹瑰櫒鏌ヨ楂樺害锛圕ontainerQueryHeight锛夌殑姣斾緥銆?cqh绛変簬瀹瑰櫒楂樺害鐨?%銆俢qi琛ㄧず瀹瑰櫒鏌ヨ鍐呰仈澶у皬锛圕ontainerQueryInline-Size锛夌殑姣斾緥銆傝繖鏄€昏緫灞炴€у崟鍏冿紝榛樿鐩稿綋浜巆qwcqb瀹瑰櫒鏌ヨ鍧楃骇鏂瑰悜澶у皬锛圕ontainerQueryBlock-Size锛夌殑姣斾緥銆傚悓涓婏紝榛樿鐩稿綋浜巆qhcqmin瀹瑰櫒鏌ヨ杈冨皬灏哄锛圕ontainerQueryMin锛夌殑姣斾緥銆傚彇cqw鍜宑qh涓緝灏忕殑cqmax琛ㄧず瀹瑰櫒鏌ヨ涓緝澶у昂瀵革紙ContainerQueryMin锛夌殑姣斾緥銆傛湰鏂囧彇cqw鍜宑qh涓緝澶х殑涓€涓紝鎴戜滑灏辩敤cqw锛?cqw绛変簬瀹瑰櫒瀹藉害鐨?%銆傞偅涔堬紝褰撳墠瀹瑰櫒鐨勫搴﹀疄闄呬笂鏄?00cqw銆傞偅涔堬細width:100%锛屽浜巗pan鍐呰仈鍏冪礌锛屽畠鐨勬枃鏈暱搴﹀氨鏄畠鐨勬暣涓搴︼紝100%琛ㄧず鏂囨湰鍐呭鐨勯暱搴idth:100cqw琛ㄧず甯︽湁瀹瑰櫒鏌ヨ闆嗙殑.marquee鐨勫搴︼紙鍗筹紝鐖跺鍣ㄧ殑瀹藉害锛塐K锛?00%鍜?00cqw锛屽浣曟瘮杈冨摢涓ぇ鍝釜灏忥紵鍏跺疄鎴戜滑鐨勫叧閿笉鏄皝澶ц皝灏忥紝鑰屾槸锛氬鏋滃綋鍓嶅鍣ㄧ殑瀹藉害锛堜篃灏辨槸鏂囧瓧鐨勫搴︼級澶т簬鐖跺鍣ㄧ殑瀹藉害锛屾垜浠渶瑕佽幏鍙栦竴涓姩鐢籶ositionvalue濡傛灉褰撳墠瀹瑰櫒鐨勫搴︼紙涔熷氨鏄枃瀛楃殑瀹藉害锛夊皬浜庣埗瀹瑰櫒鐨勫搴︼紝鍒欎笉闇€瑕佸姩鐢伙紝涔熷氨鏄姩鐢讳綅绉诲€间负0銆傞偅涔堬紝鎴戜滑鐨勬牳蹇冨氨鍙樻垚浜嗘瘮杈?鍜屼袱涓搴︿箣闂寸殑宸紓銆傜宸х殑鏄紝CSS涓彁渚涗簡姣旇緝澶у皬鐨勬暟瀛﹀嚱鏁癿ax()鍜宮in()銆傚叧浜嶤SS鏁板鍑芥暟锛屽彲浠ュ弬鑰冩垜鐨勬枃绔犫€斺€擬odernCSSSolutions:CSSmathfunctions閾哄灚浜嗚繖涔堜箙锛岀粓浜庡緱鍑烘渶鏍稿績鐨勪竴琛屼唬鐮侊細max(100%-100cqw,0px)鐨勫綋鐒讹紝鎹竴绉嶆€濊矾锛屼篃鍙互浣跨敤min()锛歮in(100cqw-100%,0px)濡傛灉span鍐呭闀垮害澶т簬瀹瑰櫒瀹藉害锛屽嵆100%-100cqw澶т簬0px锛岄偅涔堝叾瀹炶窇椹伅鏁堟灉搴旇鏄綅绉昏窛绂汇€傚浜嗭紝鏁翠釜鏁堟灉鐨勪唬鐮佹垜浠凡缁忓啓瀹屼簡锛屽畬鏁翠唬鐮侊細.marquee{overflow:hidden;绌虹櫧锛歯owrap锛涘搴︼細200px锛涜皟鏁村ぇ灏忥細姘村钩锛沜ontainer-type:inline-size;}.marqueespan{animation:marquee3slinearinfinitebothalternate;}@keyframesmarquee{to{transform:translateX(min(100cqw-100%,0px));}}鏁堟灉濡備笅锛氳繖鏍凤紝鍒颁粖澶╀负姝紝鎴戜滑鍙互杞绘澗瀹炵幇锛氭枃鏈唴瀹逛笉瓒呭嚭瀹瑰櫒瀹藉害锛屾枃鏈唴瀹硅秴鍑哄鍣ㄦ甯告樉绀猴紝鍐呭鍙互鍚戝悗婊氬姩鏉ュ洖鏄剧ず濡備笅鏁堟灉锛氬畬鏁翠唬鐮侊紝鍙互鐐瑰嚮杩欓噷锛歅ureCSSMarquee褰撶劧锛屽鏋滀綘鍧氭寔鐨勮瘽锛岃繖涓柟妗堣繕鏄瓨鍦ㄧ殑涓€涓己闄锋槸鍔ㄧ敾鐨勬椂闀挎槸鍥哄畾鐨勶紝涓嶈兘鏍规嵁鍒板唴瀹圭殑闀垮害銆傚彲鑳芥洿閫傚悎鏂囨湰鍐呭鐩稿樊涓嶅ぇ鐨勫満鏅€傛渶鍚庯紝鏈渚嬬殑DEMO鐢辨棩鏈嶇涓€浠讳富浜篠ako璐$尞銆傚ソ浜嗭紝鏈枃鍒版缁撴潫锛屽笇鏈涜繖绡囨枃绔犲浣犳湁鎵€甯姪:)鎯宠鑾峰彇鏈€鏈夎叮鐨凜SS璧勮锛屽崈涓囦笉瑕侀敊杩囨垜鐨勫叕浼楀彿鈥斺€攊CSS鍓嶇濂囬椈杞朵簨馃槃鏇村绮惧僵CSS鎶€鏈枃绔犳眹鎬诲湪鎴戠殑Github鈥斺€攊CSS锛屾寔缁洿鏂帮紝娆㈣繋鐐逛釜鏄熻闃呮敹钘忋€傛湁浠€涔堥棶棰樻垨鑰呭缓璁彲浠ュ浜ゆ祦銆傚師鍒涙枃绔犳枃绗旀湁闄愶紝鐭ヨ瘑鍖箯銆傚鏋滄枃绔犱腑鏈変换浣曚笉鍑嗙‘鐨勫湴鏂癸紝璇峰憡璇夋垜銆傛湰鏂囧弬鍔犱簡SegmentFault鎬濈淮鍐欎綔鎸戞垬璧涳紝娆㈣繋姝e湪闃呰鐨勪綘鍔犲叆銆?/p>