0

На моей веб-странице я помещал перевести виджет, когда я изменить размер браузеров widged не изменяет размерGoogle Translate виджет - отзывчивый

enter image description here

Я попытался изменить CSS, но я могу изменить только CSS для Iframe

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
 
    <script type="text/javascript" src="script.js"></script> 
 

 
    <script type="text/javascript"> 
 
     function googleTranslateElementInit() { 
 
      new google.translate.TranslateElement({ 
 
       pageLanguage: 'en', 
 
       layout: google.translate.TranslateElement.InlineLayout.SIMPLE 
 
      }, 'google_translate_element'); 
 
     } 
 
    </script> 
 

 
    <script type="text/javascript" 
 
      src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 
 

 
</head> 
 
    <body> 
 

 
     <div id="google_translate_element"></div> 
 

 
    </body> 
 
</html>

вы heve любое решение?

+0

Пожалуйста, предоставьте нам ссылку на ваш сайт.Трудно отлаживать без кода – Paradoxetion

+0

Я обновил свой вопрос @Rainfall – MatusSeidl

+0

Предоставленный ответ демонстрирует изменение размера рамки, указанной в вашем вопросе. Я считаю, что это адекватно решает ваш вопрос, пожалуйста, выберите ответ, который сработал для вас, чтобы этот вопрос можно было считать разрешенным. – Nicholas

ответ

-1

Вы можете поместить это в свой файл css для темы, которую вы используете. Подстройте его, чтобы он работал для вас. Надеюсь, это поможет!

select.goog-te-combo{width:100%!important;} 
+0

спасибо, но он не работает – MatusSeidl

2

Вы не сможете настроить расположение этого виджета строго с помощью CSS. Элементы <a>, содержащие ссылки для всех языков на выбор, выложены в ячейках <td> в строках. Поэтому они не будут динамически раскладываться с изменением размера.

Вы можете, однако, обойти это, получив все языковые ссылки в содержащемся и добавив их к <div> за пределами <table>.

Это должно выполнять то, что вы ищете, хотя по-прежнему может потребоваться много настроек CSS. Большая часть элементов пользовательского интерфейса Google выставляется вручную с размерами пикселей и переопределенными атрибутами, такими как overflow:hidden, чтобы избежать поведения браузера по умолчанию (иногда непоследовательного). Для решения этого вопроса может потребоваться справедливый бит [толкание вокруг DOM] [1], чтобы определить, где эти корректировки выполняются.

Это должно быть выполнено в самом верхнем фрейме, чтобы получить доступ к элементу и внести изменения в его CSS. Обратите внимание, что селектор не является уникальным идентификатором, поэтому он может возвращать другой , чем ожидалось, в зависимости от содержимого вашей страницы.

var iframe = document.querySelector('.goog-te-menu-frame.skiptranslate'); 

if (iframe === null) { 

    console.error('Could not find iframe of language links'); 

} else { 

// Force <iframe> visibility and auto-resizing 
iframe.style.display = ''; 
iframe.style.height = ''; 
iframe.style.width = '99%!important'; 

Это должно быть выполнено в about:blank раме , чтобы иметь доступ к элементам внутри.

// Get all the <a> elements 
var anchors = document.querySelectorAll('a.goog-te-menu2-item'); 
anchors = Array.prototype.slice.call(language_anchors); 
if (anchors.length < 1) { 
    console.error('Found no language links'); 
} 

// Get the conatiner <div> that holds the table of links 
var div = document.getElementById(':1.menuBody'); 

if (div === null) { 

    console.error('Could not find div containing table of language links'); 

} else { 

    // Remove width/height attributes to have <div> resize 
    div.style.height = ''; 
    div.style.width = ''; 

    // Iterate through all language links 
    anchors.forEach(function (a) { 
     // Set display to inline=block so its rendered like text 
     // This is what gets the elements onto a new line if they don't fit 
     a.style.display = 'inline-block'; 

     // Append them directly to the <div> 
     div.appendChild(a); 
    }); 

    // Remove the now empty <table> to keep things clean 
    div.removeChild(div.querySelector('table')); 
} 

Это может легко сломаться, если Google изменит их имена классов CSS или идентификаторы элементов. Имейте это в виду и счастливой рендеринга.

0

Не решение проблемы с изменением размера, но, возможно, полезно. Вы можете изменить макет по умолчанию в функции init из google translate selector. Изменение в строке
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
до layout: google.translate.TranslateElement.InlineLayout.VERTICAL
или layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL.

Эти варианты отображают выбор языка в вертикальном выпадающем меню, а также метку «Сделано возможным с помощью Google Translate» под или рядом с ним.

+0

Этот вариант был лучшим решением для нас. Чтобы создать поле выбора, похожее на опцию OP, это может быть стиль css, например: '.goog-te-gadget .goog-te-combo {' margin: 0; border: none; border-radius: 50px; обивка: 5px 0px 5px 35px; background: #fff url (images/google-logo.gif) no-repeat 10px center; -moz-внешний вид: нет; внешний вид: нет; -webkit-внешний вид: нет; } ' – Chumtarou

0

Google Перевести всплывающее окно Layout - отзывчивый фиксированной

<div id="google_translate_element" style="text-align: center;"></div> 
<style> 
     .goog-te-banner-frame.skiptranslate { 
      display: none !important; 
     } 
     body { 
      top: 0px !important; 
     } 

     .goog-te-menu-frame { 
     max-width:100% !important; 
     } 
     .goog-te-menu2 { 
     max-width: 100% !important; 
     overflow-x: scroll !important; 
     box-sizing:border-box !important; 
     height:auto !important; 
     } 
    </style> 

    <script type="text/javascript"> 
     function googleTranslateElementInit() { 
      new google.translate.TranslateElement({ 
       pageLanguage: 'en', 
       autoDisplay: false, 
       layout: google.translate.TranslateElement.InlineLayout.SIMPLE 
      }, 'google_translate_element'); 
      function changeGoogleStyles() { 
       if($('.goog-te-menu-frame').contents().find('.goog-te-menu2').length) { 
        $('.goog-te-menu-frame').contents().find('.goog-te-menu2').css({ 
         'max-width':'100%', 
         'overflow-x':'auto', 
         'box-sizing':'border-box', 
         'height':'auto' 
        }); 
       } else { 
        setTimeout(changeGoogleStyles, 50); 
       } 
      } 
      changeGoogleStyles(); 
     } 
    </script> 
    <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>