{"id":342222,"date":"2026-08-05T15:59:49","date_gmt":"2026-08-05T15:59:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/oxp-mobile-fixed-background\/"},"modified":"2026-08-05T15:59:31","modified_gmt":"2026-08-05T15:59:31","slug":"oxp-mobile-fixed-background","status":"publish","type":"plugin","link":"https:\/\/zh-hk.wordpress.org\/plugins\/oxp-mobile-fixed-background\/","author":23529646,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"OXP Mobile Fixed Background","header_author":"Oxypage","header_description":"Fixes stretched fixed backgrounds on mobile. Activate it and your background-attachment: fixed sections just work on touch devices \u2014 no configuration needed.","assets_banners_color":"378af0","last_updated":"2026-08-05 15:59:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/oxypage.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":63,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"oxymaster","date":"2026-08-05 15:59:31"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3635566,"resolution":"128x128","location":"assets","locale":"","width":128,"height":104},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3635566,"resolution":"256x256","location":"assets","locale":"","width":256,"height":207},"icon.svg":{"filename":"icon.svg","revision":3635566,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3635566,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3635566,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2767,274550,164886,841,2693],"plugin_category":[],"plugin_contributors":[271919],"plugin_business_model":[],"class_list":["post-342222","plugin","type-plugin","status-publish","hentry","plugin_tags-background","plugin_tags-background-attachment","plugin_tags-fixed-background","plugin_tags-mobile","plugin_tags-parallax","plugin_contributors-oxymaster","plugin_committers-oxymaster"],"banners":{"banner":"https:\/\/ps.w.org\/oxp-mobile-fixed-background\/assets\/banner-772x250.png?rev=3635566","banner_2x":"https:\/\/ps.w.org\/oxp-mobile-fixed-background\/assets\/banner-1544x500.png?rev=3635566","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/oxp-mobile-fixed-background\/assets\/icon.svg?rev=3635566","icon":"https:\/\/ps.w.org\/oxp-mobile-fixed-background\/assets\/icon.svg?rev=3635566","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Desktop browsers render <code>background-attachment: fixed<\/code> beautifully \u2014 the classic parallax effect where the content scrolls over a still background. Mobile browsers don't: iOS ignores the fixed attachment and paints the image against the element itself, so a tall section with <code>background-size: cover<\/code> shows up as a hugely stretched, blurry texture. Android is inconsistent at best.<\/p>\n\n<p>OXP Mobile Fixed Background repairs this automatically. On touch devices it detects every element with a fixed background image, removes the broken background, and re-creates it on an invisible layer with the exact dimensions of the screen, fixed to the viewport and clipped to the element's box. The result is what <code>background-attachment: fixed<\/code> was always supposed to look like \u2014 on any theme, with no configuration.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Plug and play.<\/strong> Activate the plugin and you are done. There is no settings page, no options, nothing to configure.<\/li>\n<li><strong>Lightweight.<\/strong> One small JavaScript file with zero dependencies, loaded in the footer. No frontend CSS. On desktop the script exits on its first line.<\/li>\n<li><strong>Versatile.<\/strong> Works with any theme or page builder: detection runs on the browser's computed styles, so it catches backgrounds set by stylesheets, inline styles, or builders alike. Multiple background layers are handled individually \u2014 only the fixed image layers are migrated; gradients, colors and scrolling layers stay untouched.<\/li>\n<li><strong>Respects your markup.<\/strong> Your elements are never wrapped, moved, or reordered. The only additions are one invisible background layer inside the affected element and the CSS needed to clip it.<\/li>\n<li><strong>Dynamic content covered.<\/strong> Sections injected after page load (sliders, AJAX content, popups) are detected and fixed too.<\/li>\n<li><strong>Desktop untouched.<\/strong> Where the native effect already works, the plugin does absolutely nothing.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>oxp-mobile-fixed-background<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin from the Plugins menu.<\/li>\n<li>That's it \u2014 check your fixed-background sections on a phone or tablet.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20have%20any%20settings%3F\"><h3>Does it have any settings?<\/h3><\/dt>\n<dd><p>No. The plugin is intentionally plug and play: activate it and every fixed background on your site renders correctly on touch devices.<\/p><\/dd>\n<dt id=\"how%20does%20it%20work%3F\"><h3>How does it work?<\/h3><\/dt>\n<dd><p>On touch devices, a small script finds elements whose computed style uses <code>background-attachment: fixed<\/code> with a background image. It removes those image layers from the element and re-creates them on an invisible viewport-sized fixed layer inside the element, clipped to the element's box with <code>clip-path: inset(0)<\/code>. Visually, the background is painted at the exact size of the screen and stays still while the content scrolls \u2014 the true fixed-background effect.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. The script is tiny, has no dependencies, loads in the footer, and performs a single scan when the page loads (plus a very cheap watch for content added later). On non-touch devices it exits immediately.<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20a%20specific%20element%3F\"><h3>Can I exclude a specific element?<\/h3><\/dt>\n<dd><p>Yes. Add the <code>data-oxpmfb-skip<\/code> attribute to the element and the plugin will leave it alone.<\/p><\/dd>\n<dt id=\"why%20is%20one%20of%20my%20sections%20not%20fixed%3F\"><h3>Why is one of my sections not fixed?<\/h3><\/dt>\n<dd><p>If the element (or one of its ancestors) uses a CSS transform, filter, or perspective, fixed positioning cannot work inside it \u2014 that is a browser rule, not a plugin limitation. The plugin detects this and leaves those elements untouched rather than making them worse.<\/p><\/dd>\n<dt id=\"i%20can%C2%B4t%20find%20the%20admin%20menu%20section\"><h3>I can\u00b4t find the admin menu section<\/h3><\/dt>\n<dd><p>That's because it's not needed. Just activate the plugin and it will be already working.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Automatic repair of <code>background-attachment: fixed<\/code> on touch devices: fixed\nimage layers are migrated to an invisible viewport-sized fixed layer clipped\nto the element, restoring the true parallax look on mobile.<\/li>\n<li>Per-layer handling of multiple backgrounds (gradients and scrolling layers\nstay on the element).<\/li>\n<li>Dynamic content support: elements injected after page load are fixed too.<\/li>\n<li>Developer escape hatch: <code>data-oxpmfb-skip<\/code> excludes an element.<\/li>\n<li>Dismissible welcome notice; no settings, no options \u2014 plug and play.<\/li>\n<\/ul>","raw_excerpt":"Fixes stretched fixed backgrounds on mobile. Activate it and your background-attachment: fixed sections just work on touch devices.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342222"}],"author":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/oxymaster"}],"wp:attachment":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342222"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342222"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342222"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342222"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342222"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}