CarbonAds.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="carbon-ads" ref="el" />
  3. </template>
  4. <script setup lang="ts">
  5. import { defineProps, ref, onMounted } from 'vue'
  6. const { code, placement } = defineProps<{
  7. code: string
  8. placement: string
  9. }>()
  10. const el = ref()
  11. onMounted(() => {
  12. const s = document.createElement('script')
  13. s.id = '_carbonads_js'
  14. s.src = `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}`
  15. el.value.appendChild(s)
  16. })
  17. </script>
  18. <style scoped>
  19. .carbon-ads {
  20. border-radius: 4px;
  21. margin: 0 auto;
  22. max-width: 280px;
  23. font-size: 0.75rem;
  24. background-color: var(--c-bg-accent);
  25. min-height: 105.38px; /* avoid layout shift on mobile */
  26. }
  27. .carbon-ads::after {
  28. clear: both;
  29. display: block;
  30. content: '';
  31. }
  32. @media (min-width: 420px) {
  33. .carbon-ads {
  34. z-index: 1;
  35. float: right;
  36. margin: -8px -8px 24px 24px;
  37. padding: 8px;
  38. width: 146px;
  39. max-width: 100%;
  40. min-height: 200px;
  41. }
  42. }
  43. @media (min-width: 1400px) {
  44. .carbon-ads {
  45. right: 8px;
  46. float: none;
  47. margin: 0;
  48. }
  49. }
  50. .carbon-ads :deep(.carbon-img) {
  51. float: left;
  52. margin-right: 0.75rem;
  53. max-width: 110px;
  54. border: 1px solid var(--c-divider);
  55. }
  56. @media (min-width: 420px) {
  57. .carbon-ads :deep(.carbon-img) {
  58. float: none;
  59. display: block;
  60. margin-right: 0;
  61. max-width: 130px;
  62. }
  63. }
  64. .carbon-ads :deep(.carbon-img img) {
  65. display: block;
  66. width: 100%;
  67. height: auto;
  68. }
  69. @media (min-width: 420px) {
  70. .carbon-ads :deep(.carbon-text) {
  71. padding-top: 8px;
  72. }
  73. }
  74. .carbon-ads :deep(.carbon-text) {
  75. display: block;
  76. font-weight: 400;
  77. color: var(--c-text-light);
  78. }
  79. .carbon-ads :deep(.carbon-poweredby) {
  80. display: block;
  81. padding-top: 2px;
  82. font-weight: 400;
  83. color: var(--c-text-lighter);
  84. }
  85. </style>