WordPress.org

Make WordPress Core

Opened 3 weeks ago

Last modified 3 days ago

#48688 assigned defect (bug)

TwentyTwenty: Issue with instagram oembed css

Reported by: SGr33n Owned by: nielslange
Milestone: 5.3.1 Priority: normal
Severity: normal Version: trunk
Component: Bundled Theme Keywords: has-screenshots has-patch
Focuses: css Cc:
PR Number:

Description

Hi,
When an Instagram post is embededd inside an article, the iframe is aligned to the left side and doesn't follow the site width.

Just put this inside the style.css to solve this issue:

.entry-content iframe {
	margin-left: auto !important;
	margin-right: auto !important;
}

Attachments (5)

twentytwenty-iframe.JPG (76.0 KB) - added by SGr33n 3 weeks ago.
iframepatch.diff (274 bytes) - added by SGr33n 3 weeks ago.
Screenshot 2019-11-18 at 04.55.33.png (497.6 KB) - added by nielslange 3 weeks ago.
ig-iframe-patch-rtl.diff (265 bytes) - added by SGr33n 13 days ago.
ig-iframe-patch.diff (257 bytes) - added by SGr33n 13 days ago.

Download all attachments as: .zip

Change History (23)

#1 @nielslange
3 weeks ago

  • Component changed from Themes to Bundled Theme
  • Keywords needs-patch has-screenshots added; has-patch removed
  • Owner set to nielslange
  • Status changed from new to assigned

#2 @nielslange
3 weeks ago

@SGr33n You've labelled this issue with has-patch but haven't added a *.diff or *.patch file. Are you creating a patch for this or shall I do that?

#3 follow-up: @SGr33n
3 weeks ago

Sure, sorry. Here it is the patch :)

Last edited 3 weeks ago by SGr33n (previous) (diff)

@SGr33n
3 weeks ago

#4 in reply to: ↑ 3 @nielslange
3 weeks ago

  • Keywords has-patch added; needs-patch removed

Replying to SGr33n:

Sure, sorry. Here it is the patch :)

Thanks!

I also just tried to reproduce this issue on my end, but I can't. The Instagram embed shows centred, as expected. How exactly have you added the Instagram embed to your post and what's the URL of your site, to see this issue online?

Here are the steps I tried to reproduce this issue:

  1. Go to /wp-admin/post-new.php
  2. Add a title, e.g. TEST: Instagram
  3. Add an Instagram link, e.g. https://www.instagram.com/p/BujXjQ4gx5w/?utm_source=ig_web_button_share_sheet
  4. Publish post

I've attached a screenshot on how the Instagram embed looks on my end when following the steps above.

Last edited 3 weeks ago by nielslange (previous) (diff)

#5 follow-up: @SGr33n
3 weeks ago

It's happening with a classic editor post. Could you try? Unfortunately my environment test is on a local machine.

#6 in reply to: ↑ 5 @nielslange
3 weeks ago

Replying to SGr33n:

It's happening with a classic editor post. Could you try? Unfortunately my environment test is on a local machine.

No problem. I'll run another test using the Classic Editor.

#7 @JarretC
3 weeks ago

Was able to replicate this using Classic Editor. The IG embed shows as centered in the post editing screen on Visual tab, however on the front end of the site the embed is aligned left.

The HTML for the iframe looks like this

<iframe class="instagram-media instagram-media-rendered" id="instagram-embed-0" src="https://www.instagram.com/p/BujXjQ4gx5w/embed/captioned/?cr=1&amp;v=12&amp;wp=580&amp;rd=http%3A%2F%2Flocalhost%3A8888&amp;rp=%2F2019%2F11%2F18%2F2270%2F#%7B%22ci%22%3A0%2C%22os%22%3A1771.439999996801%2C%22ls%22%3A1440.4500000018743%2C%22le%22%3A1444.3299999984447%7D" allowtransparency="true" allowfullscreen="true" frameborder="0" height="872" data-instgrm-payload-id="instagram-media-payload-0" scrolling="no" style="background: white;max-width: 580px;width: 1370px;border-radius: 3px;border: 1px solid rgb(219, 219, 219);box-shadow: none;display: block;margin: 0px 0px 12px;min-width: 326px;padding: 0px;" data-origwidth="" data-origheight="872"></iframe>

Which has some inline margin styling causing it to align incorrectly from what is displayed in the editing screen.

#8 follow-up: @SGr33n
3 weeks ago

@JarretC yes, good, thanks. Have you tried the patch?

#9 in reply to: ↑ 8 ; follow-up: @JarretC
3 weeks ago

Replying to SGr33n:

@JarretC yes, good, thanks. Have you tried the patch?

Yes, your patch would work however I don't believe that using !important is the appropriate solution here. We may want to look into the code to find out where the inline styling is coming for the margin and adjust the code there.

Using !important and for any iframe within the .entry-content element could cause display issues for users trying to align other iframes.

#10 @SGr33n
3 weeks ago

It's the only way because the margin is at inline level so it's necessary to use important here. On twentytwenty iframes like this are at the same level of the paragraphs that are infact margin auto. The problem here, in my opinion, is that twentytwenty doesn't have a main container.

#11 @ianbelanger
3 weeks ago

  • Keywords needs-patch added; has-patch removed
  • Milestone changed from Awaiting Review to 5.3.1

#12 in reply to: ↑ 9 @nielslange
3 weeks ago

Yes, your patch would work however I don't believe that using !important is the appropriate solution here. We may want to look into the code to find out where the inline styling is coming for the margin and adjust the code there.

Using !important and for any iframe within the .entry-content element could cause display issues for users trying to align other iframes.

@JarretC I agree that using !important statements should be avoided, if possible. That said, it seems that in this case !important statements are necessary. Instagram can be embedded in two ways:


  1. By pasting the Instagram URL in the visual view of the Classic editor, e.g. https://www.instagram.com/p/BujXjQ4gx5w/, which gets converted to
<iframe class="instagram-media instagram-media-rendered" id="instagram-embed-0" src="https://www.instagram.com/p/BujXjQ4gx5w/embed/captioned/?cr=1&amp;v=12&amp;wp=1160&amp;rd=http%3A%2F%2Fcore.trac.test&amp;rp=%2Ftest-instagram%2F#%7B%22ci%22%3A0%2C%22os%22%3A2667.8850000025705%2C%22ls%22%3A2334.359999978915%2C%22le%22%3A2338.24499999173%7D" allowtransparency="true" allowfullscreen="true" frameborder="0" height="872" data-instgrm-payload-id="instagram-media-payload-0" scrolling="no" style="background: white; max-width: 580px; width: calc(100% - 2px); border-radius: 3px; border: 1px solid rgb(219, 219, 219); box-shadow: none; display: block; margin: 0px 0px 12px; min-width: 326px; padding: 0px;"></iframe>

  1. By generating an embed code in Instagram, as described on https://www.wikihow.com/Embed-an-Instagram-Post, and pasting that embed code into the text view of the editor, e.g.
<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/BujXjQ4gx5w/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="12" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:16px;"> <a href="https://www.instagram.com/p/BujXjQ4gx5w/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"> <div style=" display: flex; flex-direction: row; align-items: center;"> <div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> <div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> <div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div></div></div><div style="padding: 19% 0;"></div> <div style="display:block; height:50px; margin:0 auto 12px; width:50px;"><svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-511.000000, -20.000000)" fill="#000000"><g><path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"></path></g></g></g></svg></div><div style="padding-top: 8px;"> <div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"> View this post on Instagram</div></div><div style="padding: 12.5% 0;"></div> <div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"><div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> <div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> <div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div></div><div style="margin-left: 8px;"> <div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"></div> <div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"></div></div><div style="margin-left: auto;"> <div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> <div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> <div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div></div></div></a> <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/BujXjQ4gx5w/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">Passion or addiction? 🤔</a></p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;">A post shared by <a href="https://www.instagram.com/codenex/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;" target="_blank"> Niels Lange</a> (@codenex) on <time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2019-03-03T16:19:35+00:00">Mar 3, 2019 at 8:19am PST</time></p></div></blockquote> <script async src="//www.instagram.com/embed.js"></script>

As you can tell, the first URL does not have an inline margin statement and the embed code ... don't even get me started! However, both codes contain the class instagram-media. That said, how do you think about the following CSS snippet to fix this issue:

blockquote.instagram-media,
iframe.instagram-media {
  margin: auto !important;
}

cc: @SGr33n

Last edited 3 weeks ago by nielslange (previous) (diff)

#13 @SGr33n
3 weeks ago

Looks a good solution and works good. I also thought of this, to use .instagram-media, but I also tought that this issue would happen to every iframe that have a margin inside their embedding code so in my opinion better avoid targeting this CSS to every iframe inside the entry-content.

#14 @JarretC
2 weeks ago

Yeah, unfortunate we have to use !important but it makes more sense to specify it down using the .instagram-media class.

Unless @SGr33n you've seen this issue happening with other iframes as well?

#15 @SGr33n
2 weeks ago

Just tried Instagram and Twitter. Twitter doesn't use iframe.

#16 @nielslange
13 days ago

Thus, @SGr33n, are you going to update the patch as proposed above? 😉

#17 @SGr33n
13 days ago

  • Keywords has-patch added; needs-patch removed

Sure, here they are :)

This ticket was mentioned in Slack in #core by audrasjb. View the logs.


3 days ago

Note: See TracTickets for help on using tickets.